我过去做过一些jQuery,但我完全坚持这个。我知道使用同步ajax调用的优点和缺点,但在这里它将是必需的。
加载远程页面(使用firebug控制),但不显示返回。
如果我的功能正常退回,我应该做些什么?
function getRemote() {
var remote;
$.ajax({
type: "GET",
url: remote_url,
async: false,
success : function(data) {
remote = data;
}
});
return remote;
}
答案 0 :(得分:281)
当您进行同步请求时,应该是
function getRemote() {
return $.ajax({
type: "GET",
url: remote_url,
async: false
}).responseText;
}
示例 - http://api.jquery.com/jQuery.ajax/#example-3
请注意:将async属性设置为false 已弃用并且正在被删除(link)。如果您使用此功能,许多浏览器(包括Firefox和Chrome)都已开始在控制台中打印警告:
铬:
主线程上的同步XMLHttpRequest因其对最终用户体验的不利影响而被弃用。如需更多帮助,请查看https://xhr.spec.whatwg.org/。
火狐:
主线程上的同步XMLHttpRequest因其对最终用户体验的不利影响而被弃用。如需更多帮助http://xhr.spec.whatwg.org/
答案 1 :(得分:30)
您正在错误地使用ajax功能。因为它是同步的,所以它会像这样返回内联数据:
var remote = $.ajax({
type: "GET",
url: remote_url,
async: false
}).responseText;
答案 2 :(得分:17)
该网址有多远?它是来自同一个域吗?代码看起来还不错
试试这个
$.ajaxSetup({async:false});
$.get(remote_url, function(data) { remote = data; });
// or
remote = $.get(remote_url).responseText;
答案 3 :(得分:3)
function getRemote() {
return $.ajax({
type: "GET",
url: remote_url,
async: false,
success: function (result) {
/* if result is a JSon object */
if (result.valid)
return true;
else
return false;
}
});
}