Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
json和php的ajax调用存在问题_Php_Jquery_Ajax_Json - Fatal编程技术网

json和php的ajax调用存在问题

json和php的ajax调用存在问题,php,jquery,ajax,json,Php,Jquery,Ajax,Json,我有一个AJAX函数,从php文件中获取结果,如下所示 $.ajax({ type: "POST", url: "GeteT.php", cache:false, data:"id="+ encodeURIComponent(1), dataType:'json', success: function(json) {

我有一个AJAX函数,从php文件中获取结果,如下所示

$.ajax({
             type: "POST",
             url: "GeteT.php",
             cache:false,
             data:"id="+ encodeURIComponent(1),
             dataType:'json',
             success: function(json)
             {
         g_foo = json.foo;
         }
        });
现在我想使用g_foo的值,但我不能尝试使用console.log,但我面临一个奇怪的问题。像

如果我使用这样的函数

       $.ajax({
         type: "POST",
         url: "GeteT.php",
         cache:false,
         data:"id="+ encodeURIComponent(1),
         dataType:'json',
         success: function(json)
         {
     g_foo = json.foo;
        console.log(g_foo);
     }
    });
         $.ajax({
         type: "POST",
         url: "GeteT.php",
         cache:false,
         data:"id="+ encodeURIComponent(1),
         dataType:'json',
         success: function(json)
         {
     g_foo = json.foo;

     }
    });
        console.log(g_foo);
现在我可以看到php文件返回的值

如果现在我使用这样的函数

       $.ajax({
         type: "POST",
         url: "GeteT.php",
         cache:false,
         data:"id="+ encodeURIComponent(1),
         dataType:'json',
         success: function(json)
         {
     g_foo = json.foo;
        console.log(g_foo);
     }
    });
         $.ajax({
         type: "POST",
         url: "GeteT.php",
         cache:false,
         data:"id="+ encodeURIComponent(1),
         dataType:'json',
         success: function(json)
         {
     g_foo = json.foo;

     }
    });
        console.log(g_foo);
现在我得到了错误未定义的g_foo


谢谢

因为ajax是异步的,所以在调用
$.ajax()
请求时,无法确保
g\u foo
可用,因此它在回调之外不可用


但是,您可以将
async:false
指定给该
.ajax()
调用,但它很可能会阻止浏览器,试图等待请求,这是我认为您不希望发生的事情。

由于ajax是异步的,因此无法确保只要您调用
$.ajax()
request,因此它在回调之外不可用


但是,您可以为该
.ajax()
调用指定
async:false
,但它很可能会阻止浏览器,试图等待请求,这是我认为您不希望发生的事情。

在外部使用它有两种方法:

1) 使调用像这样同步(这不是最佳做法,因为浏览器必须等待调用才能继续流):

2) 成功调用一个函数,并使用从该函数返回的任何数据从那里继续流(这是最佳实践)


要在外部使用它,有两种方法:

1) 使调用像这样同步(这不是最佳做法,因为浏览器必须等待调用才能继续流):

2) 成功调用一个函数,并使用从该函数返回的任何数据从那里继续流(这是最佳实践)