Ajax get方法不起作用

时间:2016-03-22 07:49:20

标签: javascript jquery ajax api get

我遇到问题,我从API获取json数据

  $.ajax({
    url: request,
    type: "get",
    contentType: "application/json; charset=utf-8",
    dataType: "jsonp",
    success: function (data) {
        if (data.ResultCode==="200") {
            console.log(data.Result[0]);
        }
        else if (data.ResultCode !== "200") {
            myApp.alert(data.ResultDesc, "");
        }

    },
    error: function () {
        console.log("your call failed");
        myApp.alert("Sunucuya erişilemiyor.","");
    }
});

这是我写的代码,我有一个像

这样的错误
  

Uncaught SyntaxError:意外的令牌:

网址是正确的,我无法看到问题。

1 个答案:

答案 0 :(得分:1)

dataType更改为:dataType:" json",

根据你上次的评论:

  

我这样写了但是我得到了错误对预检请求的响应没有通过访问控制检查:否' Access-Control-Allow-Origin'标头出现在请求的资源上。起源' null'因此不允许访问。所以我改为jsonp

如果源未在其末端启用CORS以跨不同域共享数据,则会发生此错误。如果您有权访问源,则启用CORS,然后您将获得数据。

否则另一个选择是在您的服务器上创建一个代理并调用它来从其他服务器获取数据。例如在php中你可以这样做:

//fetch.php
<?php
   header('Content-Type: application/json');
   $homepage = file_get_contents('http://www.example.com/');
   echo json_encode($homepage);
?>

现在您可以调用此文件来提供数据:

var request = 'fetch.php';
$.ajax({
    url: request,
    type: "get",
    //contentType: "application/json; charset=utf-8", // not needed in this case
    dataType: "json", // <----this has to be json
    success: function (data) {
        if (data.ResultCode==="200") {
            console.log(data.Result[0]);
        }
        else if (data.ResultCode !== "200") {
            myApp.alert(data.ResultDesc, "");
        }
    },
    error: function () {
        console.log("your call failed");
        myApp.alert("Sunucuya erişilemiyor.","");
    }
});