0

所以我找到了很多关于这个问题的答案,但我似乎无法理解它。

我想通过回调返回一个带有 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 等)。我想了解如何以这种方式进行操作,然后我将尝试其他方式。

谢谢大家。

4

3 回答 3

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 调用,然后什么也不返回。

于 2013-08-13T21:40:42.920 回答
0

您在回调中执行的返回不起作用,因为您将回调传递给将运行它的 ajax 方法。运行回调的不是警报调用,因此不会获得返回。

于 2013-08-13T21:58:26.077 回答
0

没错。异步 ajax 总是将代码分成两部分:

  1. 要求
  2. 经过一段时间的延迟......响应
于 2013-08-13T22:02:02.977 回答