jQuery $ .post返回数据

时间:2011-11-29 17:20:54

标签: php javascript jquery .post

我在如何使用jQuery的$ .post函数返回的数据方面遇到了一些问题。 我正在尝试测试我的服务器上是否存在图片。

这是javascript:

$.post("ajax_test_file.php",
    {filename: filetocheck},
    function(data){
        if(data==1){
            var img_ref_up = 'value 1';
        }else{
            var img_ref_up = 'value 1';
        }
    }
);

[Following code trying to use img_ref_up's value]

这是ajax_test_file.php内容:

$filename = $_POST["filename"];

if (file_exists($filename)) {
    echo 1;
} else {
    echo 0;
}

我要做的是在$ .post(...)之后使用img_ref_up的值

有没有人对此有所了解?提前致谢

3 个答案:

答案 0 :(得分:1)

$.post以异步方式运行,因此看起来您在ajax请求完成之前访问了该值。您可以将代码移动到成功回调中,这可以确保在使用该变量之前设置image_ref_up的值。

$.post("ajax_test_file.php",
    {filename: filetocheck},
    function(data){
        if(data==1){
            var img_ref_up = 'value 1';
        }else{
            var img_ref_up = 'value 1';
        }
        // move your code here
    }
);

答案 1 :(得分:1)

你不能/不应该 - ajax调用是异步的(你可以让它同步但是非常不鼓励)。您必须在回调方法中处理结果:

$.post("ajax_test_file.php",
    {filename: filetocheck},
    function(data){
        if(data==1){
            var img_ref_up = 'value 1';
        }else{
            var img_ref_up = 'value 1';
        }
        ///// DO WHATEVER YOU NEED HERE
        [Following code trying to use img_ref_up's value]
    }
);

答案 2 :(得分:1)

由于请求是异步的,因此可能会在帖子完成之前执行[以下代码]部分。你应该这样做。

$.post('url', function(data) {
    var img_ref_up;
    if (data == 1) {
        img_ref_up = 'value 1';
    }
    doSomethingWithRefUp(img_ref_up);
});

function doSomethingWithRefUp(img_ref_up) {
     [Following code]
}