$.ajax error function is not working
我正在研究一些现有的代码。我有以下代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | $.ajax({ type:"get", url: url , dataType:"jsonp", cache:"false", jsonpCallback:"onJSONPLoad", success: function(json){ alert('hi!'); //perform operation }, error: function() { alert('Error occurs!'); } }); |
现在,当我通过有效的
jquery ajax错误处理,显示自定义异常消息
jquery ajax错误函数,Ajax成功与错误函数失败
更新:我添加了以下代码来记录jquery控制台日志。
1 2 3 4 5 6 7 | @Override public boolean onConsoleMessage(ConsoleMessage cm) { Log.d("web chrome client", cm.message() +" -- From line" + cm.lineNumber() +" of" + cm.sourceId() ); return true; } |
已识别出以下错误:
添加以下代码,应用程序运行成功。
1 2 3 | if (Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN) { webView.getSettings().setAllowUniversalAccessFromFileURLs(true); } |
因此,这基本上是因为jquery无法访问URL。
感谢每一个人帮助我。
用这个
1)替换:datatype:jsonp表示跨域请求,即对不同域和
数据类型:json用于同一域的同一源请求。数据类型:"json"
2)您缺少','成功后功能
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | $.ajax({ type:"get", url: url , dataType:"json", cache:"false", jsonpCallback:"onJSONPLoad", success: function(json){ alert('hi!'); //perform operation }, error: function() { alert('Error occurs!'); } }); |
3)试试这个
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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数据类型),将永远不会触发错误回调和全局事件。
但你需要开火然后编码:
1 2 3 4 5 6 7 8 9 10 11 12 13 | var req = $.ajax({ url : url, dataType :"jsonp", timeout : 10000 }); req.success(function() { console.log('Yes! Success!'); }); req.error(function() { console.log('Oh noes!'); }); |
最近在Chrome52(2016年8月)中引入的一个bug也可能导致这种行为。但是,它不会持续太久。
https://bugs.chromium.org/p/chromium/issues/detail?ID=633696
它与初始问题没有严格的关系,因为它只触发从onSuccess处理程序启动的get请求,但我向可能搜索此问题帮助的其他人提到它。
success函数后缺少逗号,还将数据类型更改为json
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | $.ajax({ type:"get", url: url , dataType:"json", cache:"false", jsonpCallback:"onJSONPLoad", success: function(json){ alert('hi!'); //perform operation }, error: function() { alert('Error occurs!'); } }); |
试试这个。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | $.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/条目示例
并尝试用