【问题标题】:How to parse response as json object for cross domain ajax call?如何将响应解析为跨域ajax调用的json对象?
【发布时间】:2016-08-23 16:53:45
【问题描述】:

我正在进行跨域 ajax 调用。当我直接从浏览器加热链接时,我得到的 json 字符串如下:

但是当我对同一个 URL 进行 ajax 调用时,我的响应中没有得到 json。我的ajax请求如下:

$.ajax({
  url: "http://172.16.201.14:801/api/apiclearing?trackNo=" + $scope.BillClearingModel.BillTrackingNo + "&&tokenNo=~Ice321",
  dataType: 'jsonp',
  success: function(response) {
    console.log(response);
    alert("Success");
  },
  error: function(response) {
    console.log(response);
    alert("Failed");
  }
});

我在控制台中得到的内容如下:

完整对象如下:

我在这里缺少什么?谢谢。

【问题讨论】:

  • tocken 应该是标题吗?因为我在浏览器请求中看不到它。
  • 你在 https: 页面中加载 http: - 浏览器不喜欢这样
  • 我知道,但是没有什么可以解决这个问题的吗? @jaromandaX
  • 应将 http 更改为 https。你的服务器如何抛出数据?
  • @Badhon。不,没有办法将 HTTP 资源加载到 HTTPS 页面中。在几乎所有浏览器中这是不可能的。

标签: javascript jquery ajax cross-domain


【解决方案1】:

你介意试试这个吗:

var datastring = { "trackNo" : "160822000037" };//try this
//var datastring = "trackNo=160822000037"; //or this

$.ajax({
            type: 'POST',//you may try the GET type
            url: "https://172.16.201.14:801/api/apiclearing", 
            dataType: 'json',// try jsonp as well
            data: datastring,
            contentType: 'application/json',
            crossDomain: true, //newly added
            success: function(data, status, jqXHR) {
                        console.log(data);
                        console.log(status);
                        console.log(JSON.stringify(data));//to string
                        alert("Success");

            },
           error:function(jqXHR, textStatus, errorThrown) {
                            alert("Status:"+ textStatus + " Error:" + errorThrown);


         }

您也可以考虑将 Access-Control-Allow-Origin 添加到您的服务器,例如 php 中的Access-Control-Allow-Origin: http://yourdomain-you-are-connecting-from.com

【讨论】:

  • 实际尝试过,但没有区别。它没有给出任何错误,给出 200 但没有在响应对象中找到 json。
  • 我认为您请求的服务器有问题。您的服务器如何响应?
  • 可能是这样,但是当我直接点击 url 时,它会返回 json,我尝试了一些在线 json 验证器以确保响应是有效的 json,三个在线验证器中的两个说json 没问题。
  • @Badhon,完全没有在 .net 上尝试过。我编辑了我的代码,你可以试试吗?您也可以尝试使用代码来查看发生了什么。
  • 我明白了,我感觉服务器没有抛出期望的json数据。尝试检查您的服务器响应..
猜你喜欢
  • 1970-01-01
  • 2013-09-19
  • 1970-01-01
  • 2017-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-16
  • 1970-01-01
相关资源
最近更新 更多