2017-10-12 131 views
0

我试图让通过AJAX API调用,当结果是牵强,我不断收到此错误:

Uncaught ReferenceError: $sum_of_nums is not defined

如果您查看下面的JSON数据,您会在数据本身中看到$sum_of_nums变量。

// JSON data 
"results":[{ 
    "name": "Some Name",      
    "TotalCost": $sum_of_nums.TotalCost  
}] 


$(document).ready(function(){ 
    var data = { 
    "company": "SomeCompanyName", 
    "companyCode": @Html.Raw(Json.Encode(Model.CompanyId))     
    }; 

    var url = "URL_VALUE_HERE"; 
    $.ajax({ 
    url: url, 
    crossDomain: true, 
    dataType: "json", 
    data: data, 
    error:function(e){ 
     alert("nope" + e); 
    }, 
    success: function (xhr_request) {                        
     $("#Container").html("<pre>" + JSON.stringify(xhr_request["results"], undefined, 2) + "</pre>"); 
     }); 
    } 
    }); 
}); 

我真的不知道为什么这个错误发生,这意味着我不知道如果我正确地分析这些数据。

任何帮助将不胜感激!

+0

返回的JSON解析变量名$sum_of_nums无效。您需要实际将该值放入JSON本身 - 而不是变量引用。请注意,你不需要再次调用'JSON.stringify'。当你指定'dataType:'json''时,jQuery已经对你的响应进行了反序列化。你也不需要设置'crossDomain:true'。没有关于这是跨域。最后,您的JS代码在'success'处理程序中还有一个额外的关闭'})' –

回答

1

的原因是因为响应包含,如果它有它变量,不会被你的后端

"name":"Some Name",      
     "TotalCost": $sum_of_nums.TotalCost 
+0

只是为了阐明JSON数据本身,它不是本地存储在我的系统上。这些数据实际上是从一个URL的外部获取的,并且这是返回的内容。 –

+0

尝试在您的php代码中分配$ sum_of_nums.TotalCost = 0并检查。它会工作 –

+0

有没有反序列化这个提取的JSON数据的方法? –

相关问题