Jquery $.ajax错误函数不工作
我正在处理一些现有的代码。我有以下代码:Jquery $.ajax错误函数不工作,jquery,Jquery,我正在处理一些现有的代码。我有以下代码: $.ajax({ type: "get", url: url , dataType: "jsonp", cache: "false", jsonpCallback: "onJSONPLoad", success: function(json){ alert('hi!'); //perform oper
$.ajax({
type: "get",
url: url ,
dataType: "jsonp",
cache: "false",
jsonpCallback: "onJSONPLoad",
success: function(json){
alert('hi!');
//perform operation
},
error: function() {
alert('Error occurs!');
}
});
现在,当我传递有效的url
时,它工作正常。但是当我传递无效的url
时,它应该通过一个错误警报。但是脚本没有抛出任何错误警报。基本上我想验证url
参数,否则它会失败?请帮助我找出我的代码中的错误,或者建议我其他的实现方法。我已检查了以下链接,但无法解决我的问题:, 更新: 我添加了以下代码来记录jquery控制台日志
@Override
public boolean onConsoleMessage(ConsoleMessage cm) {
Log.d("web chrome client", cm.message() + " -- From line "
+ cm.lineNumber() + " of "
+ cm.sourceId() );
return true;
}
确定了以下错误:
XMLHttpRequest无法加载file:///android_asset/xxxx/new_source.json?callback=onJSONPLoad. 访问控制不允许原点为null允许原点。-从null的第1行开始
正在添加以下代码,应用程序正在成功运行
if (Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN) {
webView.getSettings().setAllowUniversalAccessFromFileURLs(true);
}
因此,基本上这是因为jquery无法访问url。谢谢大家的帮助。您缺少了“成功后逗号”功能,还将数据类型更改为json
$.ajax({
type: "get",
url: url ,
dataType: "json",
cache: "false",
jsonpCallback: "onJSONPLoad",
success: function(json){
alert('hi!');
//perform operation
},
error: function() {
alert('Error occurs!');
}
});
用这个
1) 替换此项:
数据类型:jsonp用于跨域请求,这意味着请求到不同的域和
数据类型:json用于同一域同一来源请求。
数据类型:“json”
2) 您缺少成功后的功能
$.ajax({
type: "get",
url: url ,
dataType: "json",
cache: "false",
jsonpCallback: "onJSONPLoad",
success: function(json){
alert('hi!');
//perform operation
},
error: function() {
alert('Error occurs!');
}
});
3) 试试这个
4) 检查这个
json类型将获取的数据文件解析为JavaScript对象,并将构造的对象作为结果数据返回。为此,当浏览器支持jQuery.parseJSON()时,它使用jQuery.parseJSON();否则,它将使用函数构造函数。格式错误的JSON数据将抛出解析错误(有关更多信息,请参阅JSON.org)。JSON数据便于以简洁且易于JavaScript解析的方式通信结构化数据。如果远程服务器上存在获取的数据文件,请指定jsonp类型
jsonp类型附加了一个查询字符串参数callback=?链接到URL。服务器应该在JSON数据前面加上回调名称,以形成有效的JSONP响应。我们可以使用jsonp选项为$.ajax()指定回调以外的参数名
注意:JSONP是JSON格式的扩展,需要一些服务器端代码来检测和处理查询字符串参数。关于它的更多信息可以在原始帖子中找到,详细介绍了它的使用
从远程服务器检索数据时(只能使用脚本或jsonp数据类型),将永远不会触发错误回调和全局事件。 但你需要先开火,然后再编码:
var req = $.ajax({
url : url,
dataType : "jsonp",
timeout : 10000
});
req.success(function() {
console.log('Yes! Success!');
});
req.error(function() {
console.log('Oh noes!');
});
试试这个
$.ajax({
type: "get",
url: url ,
dataType: "jsonp",
cache: "false",
jsonpCallback: "onJSONPLoad",
success: function(result){
alert('hi!');
//perform operation
},
error: function( req, status, err ) {
console.log( 'something went wrong', status, err );
alert('something went wrong'+ status + err);
}
});
也读一下这个。
试一试
$.getJSON()
而不是$.ajax()
最近在chrome 52中引入的一个bug(2016年8月)也会导致这种行为。
希望它不会持续太久
它与最初的问题没有严格的关系,因为它仅在从onSuccess处理程序启动GET请求时触发,但我向可能搜索此问题帮助的其他人提及它。GET and Paste error from console.。您的答案如下:[First][1]和:[Second][2][1]:[2]:谢谢,对于尝试
数据类型:“jsonp”
是可以的。问题是为什么错误块不工作。如果我使用数据类型:“json”
,错误块工作。但是对于有效的url成功函数,由于数据返回表单的url是jsonp
的数据类型,因此该函数不起作用。从远程服务器检索数据时(只能使用脚本或jsonp数据类型),将永远不会触发错误回调和全局事件。如果这是原因,你知道如何处理我的情况吗。请建议。你能检查一下这个吗
$.ajax({
type: "get",
url: url ,
dataType: "jsonp",
cache: "false",
jsonpCallback: "onJSONPLoad",
success: function(result){
alert('hi!');
//perform operation
},
error: function( req, status, err ) {
console.log( 'something went wrong', status, err );
alert('something went wrong'+ status + err);
}
});