2016-09-09 5 views
0

Привет, мне нужно, чтобы передать значение PHP в process.js, как я могу это сделать. Я знаю, что мне нужно использовать AJAX, но я не знаю, что делать, чтобы получить значение в process.js. Я судимое что-то вроде этогокак передать переменную PHP в process.js

<script type="text/javascript"> 
function go(){ 
     var s; 
    var variable = 5; 
    $.ajax({ 
     method:"POST", 
     tupe:"POST", 
     url: "take.php", 
     data:({val:variable}), 
     success: function(data){ 
      //$('#msg').html(data); 
          var b = data; 
          s=b; 
     } 

    }); 
      alert (s); 
    } 
</script> 

и мой РНР:

<?php 
if($_POST){ 
    $img = "index.jpg" ; 
    echo $img; 

} 
?> 

но когда я предупредит «s » не определено, и я не знаю, как передать его в код обработки для показать изображение на холсте. Может кто-нибудь потренировать меня?

+0

Лучшей практикой является вывод в формате JSON из PHP. – Devon

+1

Ваше предупреждение запускается до получения ответа. Вы должны поместить его в обратный вызов успеха, если хотите использовать значение, возвращаемое в ответе. –

ответ

2

Ajax является асинхронным. Это означает, что, хотя вызов ajax выполняется, сценарий продолжается.

Ваша переменная s не определена до тех пор, пока не закончится вызов ajax, в функции success. Сразу после вызова ajax в скрипте - но не вовремя - он еще не определен.

Чтобы получить доступ к переменным, возвращаемым вызовом ajax, вам необходимо поместить свою логику в функцию success.

0

Другой ответ правильный, но другой вариант - использовать синхронный вызов, который блокирует вызов до ajax() до тех пор, пока данные не вернутся. Так выглядит, как вы предполагали, что это сработало.

Чтобы сделать синхронный вызов, просто передать параметр async:false в ajax() вызова, например:

$.ajax({ 
     method:"POST", 
     tupe:"POST", 
     url: "take.php", 
     data:({val:variable}), 
     success: function(data){ 
      //$('#msg').html(data); 
          var b = data; 
          s=b; 
     }, 
     async: false 
    }); 

Подробнее здесь: How can I get jQuery to perform a synchronous, rather than asynchronous, Ajax request?

И в JQuery documentation.

 Смежные вопросы

  • Нет связанных вопросов^_^