我一直在寻找并找到了一些关于这个问题的类似问题,但事情对我来说根本不起作用。
这是我的功能:
function ajaxRequest(url, type, datatype, contenttype, data, displayLoadingImg){
var result="";
displayLoadingImg = (typeof displayLoadingImg === "undefined") ? 0 : displayLoadingImg;
if(displayLoadingImg == 1){
$("#loadingImgAging").css("display","block");
}
$.ajax({
url:url,
type:type,
dataType:datatype,
contentType: contenttype,
data : JSON.stringify(data),
success:function(res){
result = res;
if(displayLoadingImg == 1){
$("#loadingImgAging").css("display","none");
}
},
error:function(res){
result="";
},
async : false
});
return result;
}
我如何称呼它:
setTimeout(ajaxRequest(url,"GET","json","application/json",0,1), 500);
我尝试使用beforeSend()
,但它既不起作用。
注意:如果我删除async : false
或将其放到true
,我的浏览器控制台中会收到错误Cross-Origin Request Blocked....
。
答案 0 :(得分:0)
我的猜测是你不能用本地文件做一个ajax请求。有办法做到这一点,但我更喜欢这两种方法
我通常使用python来创建一个简单的服务器。在终端/控制台中键入:" python -m SimpleHTTPServer 9081" (或您想要的任何端口号)。然后,只需打开指向您指定端口的本地主机。
或在Windows中使用以下代码创建批处理文件。必须在配置完成之前重新启动Chrome。
start "chrome" "C:\Program Files (x86)\Google\Chrome\Application\chrome" --allow-file- access-from-files
exit
答案 1 :(得分:0)
我假设您正在对另一个域文件进行AJAX调用,您必须使用JSONP作为您的dataType。这样做你就不必使async = false。
答案 2 :(得分:0)
试试这个: 在你执行ajax调用set display to block之后,在ajax调用之后(成功或错误无关紧要) - 就在你返回之前 - 将display设置为none。你不需要displayLoadingImg和代码来处理它。还是我想念ssomething?