Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.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
Javascript 使用PHP服务返回有效的json和$.ajax_Javascript_Jquery_Ajax_Json - Fatal编程技术网

Javascript 使用PHP服务返回有效的json和$.ajax

Javascript 使用PHP服务返回有效的json和$.ajax,javascript,jquery,ajax,json,Javascript,Jquery,Ajax,Json,我一直在使用用PHP创建的web服务,不知道我做错了什么。。我在这里创建了一个小提琴示例: 我尝试了各种组合,但不断得到404未找到的反馈,当我指定jsonp时,我没有收到错误消息,但在web控制台中,我可以看到404错误。。在浏览器中,当我访问url时,它将返回有效的json 我的问题是如何知道何时使用jsonp或json?此外,这些服务是从外部来源提供给我的,而不是同意返回json。我如何知道问题是在我这边还是在他们这边 下面是ajax代码 baseUrl = "http://exclusi

我一直在使用用PHP创建的web服务,不知道我做错了什么。。我在这里创建了一个小提琴示例: 我尝试了各种组合,但不断得到404未找到的反馈,当我指定jsonp时,我没有收到错误消息,但在web控制台中,我可以看到404错误。。在浏览器中,当我访问url时,它将返回有效的json

我的问题是如何知道何时使用jsonp或json?此外,这些服务是从外部来源提供给我的,而不是同意返回json。我如何知道问题是在我这边还是在他们这边

下面是ajax代码

baseUrl = "http://exclusivegetaways.co.za/api.php";
    $.ajax({ 
            type: "GET",
            url: baseUrl,
            data: {something : "something"},
            //contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (result) {
                alert("works");
                alert(result);
            },
            error: function (a,b,cc) {
                alert(a+b+cc);
            }
        });
我已经能够从ajax错误对象中提取json数据了??像这样:

baseUrl = "http://exclusivegetaways.co.za/api.php?something=something";

$.ajax({ 
    type: "GET",
    url: baseUrl,
    dataType: "json",
    success: function (res) {
        alert("worked");
        //alert(res);
    },
    error: function(jqxhr) {
        try {        
            f = JSON.parse(jqxhr.responseText);
        ...valid json returned here

        } catch(err) {alert(err);}
    }
});

这是因为存在一个安全限制,它阻止Ajax查询远程位置

作为一种通过Ajax访问远程位置的变通方法,您可以在webApp(例如PHP)中构建一个自定义URL,该URL查询远程API并返回JSON


然后,在JavaScript中,通过Ajax调用此URL(从您的应用程序)。

首先:始终查看JavaScript错误控制台

另见


我尝试了各种组合,但不断得到404未找到的反馈,当我指定jsonp时,我没有收到错误消息,但在web控制台中,我可以看到404错误。在浏览器中,当我访问url时,它将返回有效的json

这表明:

  • 他们不支持JSONP
  • 他们查看HTTP头和404请求,以阻止来自Ajax的访问(这不是一个好方法,错误代码是误导性的)

我的问题是如何知道何时使用jsonp或json

通常通过阅读您尝试使用的服务器的文档


此外,这些服务是从外部来源提供给我的,而不是同意返回json。我如何知道问题是在我这边还是在他们这边

通常通过使用API提供商提供的任何支持(即从他们的文档开始,然后回到他们提供的与人通信的任何方式)。

由于您的ajax请求,仅在以下情况下才允许: 域名、应用层协议和(在大多数浏览器中)端口 运行脚本的HTML文档数相同

在您的情况下,应用层协议不同,这就是脚本失败的原因

可能的解决办法是:

  • ,必须由服务器提供

  • ,这是一个更“优雅”和干净的解决方案,但尚未完全得到IE的支持(IE7不支持,IE8有一些限制)


请检查此url,此问题已在前面询问过。[何时使用json以及何时将jsonp与jquery$.ajax结合使用?][1][1]:我不知道访问控制的事情,我能通过它吗?我正在尝试创建一个移动应用程序,这样它就不会在同一个域中。至于浏览器,它拾取url没有问题,我甚至在jsonlint中检查了结果。你在移动应用程序中使用什么模拟器。对于android emulator,我也遇到了同样的问题,但在设备上进行了测试,效果很好。xcode和android都没有给出结果。
XMLHttpRequest cannot load http://exclusivegetaways.co.za/api.php?location=provinces.
No 'Access-Control-Allow-Origin' header is present on the requested resource. 
Origin 'http://fiddle.jshell.net' is therefore not allowed access.