通过回调返回带有ajax的值

时间:2013-08-13 21:37:34

标签: php ajax callback return

所以我找到了很多这个问题的答案,但我似乎无法绕过它。

我想通过回调返回带有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等)。我想知道如何这样做,然后我会尝试其他方式。

谢谢大家。

3 个答案:

答案 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总是将代码分成两部分:

  1. 请求
  2. 经过一段时间的延迟......回复