如何在 ajax 调用后更改包装器 JavaScript 函数中的全局变量
How do I change a global variable in the wrapper JavaScript function after an ajax call?
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 success 函数中的 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 响应值分配给回调函数中的全局值。
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 正在全局范围中查找JavaScript函数
- 如何将输入(type=text)从html表单传递到javascript函数
- 如何调用这个匿名 JavaScript 函数
- 通过Ajax将JavaScript函数传递给PHP文件
- 在javascript函数中设置全局变量
- 如何在执行此特定onclick事件时执行JavaScript函数
- 使用javascript函数在页面初始化后加载jquery
- javascript函数同步
- 如何将一个JavaScript函数回调为多个函数
- 在javascript函数中使用php变量
- 代码背后调用一个JavaScript函数的按钮点击-C#
- 将JavaScript函数与HTML分离
- 组合两个javascript函数
- 在 Java 中的 JavaScript 函数中插入 Wicket 值
- javascript函数内部的代码用逗号而不是分号分隔
- href属性内的javascript函数
- 使用html表单中的参数调用JavaScript函数
- 分析Javascript函数中的多个对象
- javascript函数的:和=之间的区别