ajax 检查错误函数,关于jquery:$.Ajax错误函数不工作

我正在研究一些现有的代码。我有以下代码:

$.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 ajax错误处理,显示自定义异常消息

jquery ajax错误函数,Ajax成功与错误函数失败

更新:我添加了以下代码来记录jquery控制台日志。

@Override

public boolean onConsoleMessage(ConsoleMessage cm) {

Log.d("web chrome client", cm.message() +" -- From line"

+ cm.lineNumber() +" of"

+ cm.sourceId() );

return true;

}

已识别出以下错误:XMLHttpRequest cannot load file:///android_asset/xxxx/new_source.json?callback=onJSONPLoad. Origin null is not allowed by Access-Control-Allow-Origin. -- From line 1 of null

添加以下代码,应用程序运行成功。

if (Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN) {

webView.getSettings().setAllowUniversalAccessFromFileURLs(true);

}

因此,这基本上是因为jquery无法访问URL。

感谢每一个人帮助我。

从控制台获取并粘贴错误。

您的答案在这里:【第一个】【1】这里:【第二个】【2】【1】:stackoverflow.com/questions/377644/…【2】:stackoverflow.com/questions/3642348/jquery-ajax-error-callba‌&8203;ck

查看我的ANS。

用这个

1)替换:datatype: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)试试这个

error: function(jqXHR, exception) {

if (jqXHR.status === 0) {

alert('Not connect.

Verify Network.');

} else if (jqXHR.status == 404) {

alert('Requested page not found. [404]');

} else if (jqXHR.status == 500) {

alert('Internal Server Error [500].');

} else if (exception === 'parsererror') {

alert('Requested JSON parse failed.');

} else if (exception === 'timeout') {

alert('Time out error.');

} else if (exception === 'abort') {

alert('Ajax request aborted.');

} else {

alert('Uncaught Error.

' + jqXHR.responseText);

}

}

4)检查jquery.ajax

JSON类型将获取的数据文件解析为一个javascript对象,并将构造的对象作为结果数据返回。为此,它在浏览器支持时使用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!');

});

谢谢,因为你试过dataType:"jsonp"没问题。问题是为什么错误块不能工作。

如果我使用dataType:"json",错误块会起作用。但是,对于有效的url success函数,由于url是jsonp的数据类型,因此它不起作用。

没有更新不起作用。

当从远程服务器检索数据时(只能使用脚本或JSONP数据类型),将永远不会触发错误回调和全局事件。检查我的最新答案

如果这是原因,你知道如何处理我的情况吗?请建议。

请检查一下haykranen.nl/2011/02/25/jquery-1-5-and-jsonp-requests好吗?

谢谢你的帮助。你提供的信息真的需要我的全部信息。我已经更新了解决问题的方法。

当URL无效时,添加timeout似乎开始为我调用error。

最近在Chrome52(2016年8月)中引入的一个bug也可能导致这种行为。但是,它不会持续太久。

https://bugs.chromium.org/p/chromium/issues/detail?ID=633696

它与初始问题没有严格的关系,因为它只触发从onSuccess处理程序启动的get请求,但我向可能搜索此问题帮助的其他人提到它。

success函数后缺少逗号,还将数据类型更改为json

$.ajax({

type:"get",

url: url ,

dataType:"json",

cache:"false",

jsonpCallback:"onJSONPLoad",

success: function(json){

alert('hi!');

//perform operation

},

error: function() {

alert('Error occurs!');

}

});

谢谢你的回答,逗号在那儿。

试试这个。

$.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);

}

});

也读这个。http://api.jquery.com/jquery.getjson/条目示例

并尝试用$.getJSON()代替$.ajax()。

我想要错误的警告信息。

请现在检查

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值