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

问题描述 投票:0回答:1

在我的下面的代码中,它成功返回一个对象,当输出到控制台时,它以类似于:

{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

jquery ajax
1个回答
0
投票

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

qazxsw poi实际上返回一个简单的JSON字符串。

所以改变你Your URLdataType。此外,您应该使用'json'回调而不是success

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

演示如下。

json
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);
  }
});
© www.soinside.com 2019 - 2024. All rights reserved.