Привет мне нужен способ передать значение PHP для processing.js, как я могу это сделать. Я знаю, что мне нужно использовать AJAX, но я не знаю, что делать, чтобы получить значение в processing.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 это:
<?php
if($_POST){
$img = "index.jpg" ;
echo $img;
}
?>
но когда я предупреждаюs«оно не определено, и я не знаю, как передать его в код обработки для отображения изображения на холсте. Может ли кто-нибудь меня обмануть?
Аякс асинхронный. Это означает, что пока выполняется вызов ajax, сценарий продолжается.
Ваш s
переменная не определена до тех пор, пока не завершится вызов ajax, в success
функция. Сразу после вызова ajax в скрипте — но не во времени — он еще не определен.
Чтобы получить доступ к переменным, возвращаемым вызовом ajax, вам нужно поместить свою логику в success
функция.
Другой ответ правильный, но другой вариант — использовать синхронный вызов, который заблокирует вызов 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
});
Больше информации здесь: Как я могу заставить jQuery выполнять синхронный, а не асинхронный Ajax-запрос?
И в Документация JQuery.