jQuery ajax调用成功,如何在包装javascript函数中更改全局变量?

2020/12/31 08:21 · jquery ·  · 0评论
function ajax_test(str1){ 
  var url = "None" 
  jq.ajax({
    type:'post', 
    cache: false, 
    url: 'http://....' + str1, 
    success: function(data, status, xhr){ 
      url=data; 
    }, 
    error: function (xhr, status, e) {  
    }, 
    async: true, 
    dataType: 'json' 
  }); 
  return url 
} 

如何将全局变量url设置为返回的成功Ajax数据?

在Javascript中,函数不可能达到return异步结果。该函数通常会在AJAX请求发出之前返回。

您始终可以强制您的请求与同步async: false,但这通常不是一个好主意,因为它将导致浏览器在等待结果时锁定。

解决此问题的标准方法是使用回调函数。

function ajax_test(str1, callback){  
   jq.ajax({ 
     //... your options
     success: function(data, status, xhr){  
       callback(data);
     }
   });  
}  

然后可以这样称呼它:

ajax_test("str", function(url) {
  //do something with url
});

这是我的示例代码,用于从php检索数据,然后将该值传递给ajax成功函数内的javascript全局变量。这个对我有用!

var retVal = null; 

function ajaxCallBack(retString){
    retVal = retString;
}

function readString(filename){
    $.ajax({  
        type: "POST",  
        url: "readString.php",  
        data: { 'fn': filename },      
        success: function(response){
            ajaxCallBack(response);
        }
    }); 
}

PHP代码(readString.php):

<?php

     $fn  = $_POST['fn'];

     $file = fopen("path/".$fn.".record","r");
     $string = fread($file,filesize("path/".$fn.".record"));
     fclose($file); 

     echo $string;  
?>

但是,由于$ .ajax()异步发送请求,这意味着它可能在成功回调运行之前返回,因此您不应依赖于它顺序运行并自行返回值。因此,这里我们在回调函数中将php响应值分配给全局值。

本文地址:http://jquery.askforanswer.com/jquery-ajaxdiaoyongchenggongruhezaibaozhuangjavascripthanshuzhonggenggaiquanjubianliang.html
文章标签: ,  
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!