所以我找到了很多这个问题的答案,但我似乎无法绕过它。
我想通过回调返回带有ajax的值。
下面是ajax访问的php
<?php
session_start();
$filename = '../tempUploads/i'.$_SESSION['user'].'.'.$_SESSION['imageExt'];
if ( file_exists($filename) ) {
echo 1;
}
else {
echo 0;
}
?>
下面是javascript
alert( imageExist(mycallback) ); //I want this to echo either 1 or 0
function mycallback(data) {
return data;
}
function imageExist(callback) {
$.ajax({
url:'../php/imageExist.php',
success:callback
});
}
我确信有很多方法可以做到这一点。我知道ajax是异步的,不能返回值。我不想让它同步。我也不想使用promise / defer(.done等)。我想知道如何这样做,然后我会尝试其他方式。
谢谢大家。
答案 0 :(得分:0)
你犯了一个小错误。
如果要提醒数据,则必须在回调函数中执行此操作:
imageExist(mycallback); //I want this to echo either 1 or 0
function mycallback(data) {
alert(data);
//return data;
}
function imageExist(callback) {
$.ajax({
url:'../php/imageExist.php',
success:callback
});
}
这是因为imageExist将启动ajax调用,然后不返回任何内容。
答案 1 :(得分:0)
您在回调中所做的返回不起作用,因为您正在将回调传递给ajax方法,然后该方法将运行它。它不是运行回调的警报调用,因此无法获得返回。
答案 2 :(得分:0)
这是对的。异步ajax总是将代码分成两部分: