我有这样的东西,它是一个简单的调用脚本,给我一个值,一个字符串......
function testAjax() {
$.ajax({
url: "getvalue.php",
success: function(data) {
return data;
}
});
}
但如果我打电话给这样的话
var output = testAjax(svar); // output will be undefined...
那么如何返回值呢? 以下代码似乎也不起作用......
function testAjax() {
$.ajax({
url: "getvalue.php",
success: function(data) {
}
});
return data;
}
答案 0 :(得分:381)
答案 1 :(得分:358)
从函数返回数据的唯一方法是进行同步调用而不是异步调用,但这会在等待响应时冻结浏览器。
您可以传入一个处理结果的回调函数:
function testAjax(handleData) {
$.ajax({
url:"getvalue.php",
success:function(data) {
handleData(data);
}
});
}
这样称呼:
testAjax(function(output){
// here you use the output
});
// Note: the call won't wait for the result,
// so it will continue with the code here while waiting.
答案 2 :(得分:168)
你可以添加async选项,将false 和添加到ajax调用之外。
function testAjax() {
var result="";
$.ajax({
url:"getvalue.php",
async: false,
success:function(data) {
result = data;
}
});
return result;
}
答案 3 :(得分:-1)
Idk如果你们解决了它,但我建议采用另一种方式来实现它,并且它有效:)
ServiceUtil = ig.Class.extend({
base_url : 'someurl',
sendRequest: function(request)
{
var url = this.base_url + request;
var requestVar = new XMLHttpRequest();
dataGet = false;
$.ajax({
url: url,
async: false,
type: "get",
success: function(data){
ServiceUtil.objDataReturned = data;
}
});
return ServiceUtil.objDataReturned;
}
})
所以这里的主要想法是,通过添加async:false,然后让所有内容都等待,直到检索到数据。然后你将它分配给类的静态变量,一切都神奇地起作用:)
答案 4 :(得分:-13)
请参阅jquery docs示例: http://api.jquery.com/jQuery.ajax/ (约2/3页)
您可能正在寻找以下代码:
$.ajax({
url: 'ajax/test.html',
success: function(data) {
$('.result').html(data);
alert('Load was performed.');
}
});
同一页......降低。