JQuery ajax调用返回的东西不是它应该的JSON

时间:2018-03-17 17:06:58

标签: jquery ajax

在我的下面的代码中,它成功返回一个对象,当输出到控制台时,该对象以如下内容开头:

{readyState: 4, 
 getResponseHeader: ƒ, 
 getAllResponseHeaders: ƒ, 
 setRequestHeader: ƒ, 
 overrideMimeType: ƒ, 
 …}

但是当我使用开发者控制台>网络标签,我看到了人们期望的真实数据:

enter image description here

如何从此对象中获取数据?不知道我做错了什么。

以下是代码:

get_netsuite: function (cart) {
    //console.log(JSON.stringify(cart.result, null, 4));

    url = netsuite_server + '/sbe-dev-elbrus/services/ProfileExtension.Service.ss?c=854511&n=2';
    url = 'https://checkout.na3.netsuite.com/c.854511/sbe-dev-elbrus/services/ProfileExtension.Service.ss?callback=?';
    var data = { 'c': '854511', 'n': 2 };

    jQuery.ajax({url: url, async: false, type: 'GET', data: data, dataType: 'jsonp', 
        complete: function (resp) {
            console.log('complete');
            tempdata = resp;
            console.log(resp);
            if (resp.isLoggedIn) {
                App.globals.logged_in = true;
                jQuery('.signin-main #sign_in').hide();
                jQuery('.signin-main #sign_out').css('display', 'inline-block');
//              jQuery('.widget_nav_menu').find('.sign-out, .my-account').css('display', 'inline-block');
            } else {
                App.globals.logged_in = false;
                jQuery('.signin-main #sign_out').hide();
                jQuery('.signin-main #sign_in').css('display', 'inline-block');
            }

            App.globals.frequency_tbl = cart.header.frequency_tbl;
            App.cart.display_cart(cart);
        }
    });
},

以下是它的网址:

https://checkout.na3.netsuite.com/c.854511/sbe-dev-elbrus/services/ProfileExtension.Service.ss?c=854511&n=2

1 个答案:

答案 0 :(得分:0)

您尝试将该URL作为JSONP访问,但它不是JSONP端点。

Your URL actuallt返回一个简单的JSON字符串。

因此,将dataType更改为'json'。此外,您应该使用success回调而不是complete

当然,使用json数据类型时,您必须处理CORS问题。

下面的演示。



var url = 'https://checkout.na3.netsuite.com/c.854511/sbe-dev-elbrus/services/ProfileExtension.Service.ss?callback=TEST?';

url = 'https://cors-anywhere.herokuapp.com/'+url; // for testing purposes only

var data = {'c': '854511', 'n': 2};

jQuery.ajax({
  url: url,
  async: false,
  type: 'GET',
  data: data,
  dataType: 'json',
  success: function(resp) {
    console.log(resp);
  }
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
&#13;
&#13;