Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery $.ajax错误函数不工作_Jquery - Fatal编程技术网

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); 
               } 
      });