显示一些错误未捕获的ReferenceError:

我有一个json文件,并显示一些错误,请你帮我

显示错误Uncaught ReferenceError: marketlivedata is not defined

     Data Call to json  // ===================== $(document).ready(function(e) { // alert('hello'); // var marketlivedata ; }); // ===================== function getUserData() { $.ajax({ type: "GET", url: "http://xxxxxxxxx.xxxxxxx.com/xxxxxxx.json", dataType: 'jsonp', crossDomain: true, success: function(data) { // $('#ajexLoaderSec').hide(); console.log(data); }, error: function(e) { alert("There is an error while connecting to the server. Please try after some time"); } }); }; getUserData();    gsdf sdf sdfsd sdf sd   

我的json格式是

 marketlivedata([{"sensex":{"trend":"equal","CloseIndexValue":"24893.81","premarket":"false","DateTime":"11:41 AM | 08 Sep 2015","CurrentIndexValue":"24958.31","Segment":"BSE","OpenIndexValue":"24972.01","PercentChange":"0.26","IndexName":"SENSEX","NetChange":"64.50"},"nifty":{"trend":"equal","CloseIndexValue":"7558.80","premarket":"false","DateTime":"11:41 AM | 08 Sep 2015","CurrentIndexValue":"7582.85","Segment":"NSE","OpenIndexValue":"7587.70","PercentChange":"0.32","IndexName":"CNX NIFTY","NetChange":"24.05"},"gold":{"ClosePrice":"26500.00","trend":"negative","OpenPrice":"26499.00","ExpiryDate":"2015-10-05","SpotSymbol":"SGOLDAHM","LastTradedPrice":"26441.00","DateTime":"8-September-2015 11:34:22","Symbol":"GOLD","PercentChange":"-0.22","CommodityName":"Gold","NetChange":"-59.00","PriceQuotationUnit":"10 GRMS ","SpotPrice":"26401.0"},"silver":{"ClosePrice":"35193.00","trend":"equal","OpenPrice":"35176.00","ExpiryDate":"2015-12-04","SpotSymbol":"SSILVERAHM","LastTradedPrice":"35070.00","DateTime":"8-September-2015 11:34:0","Symbol":"SILVER","PercentChange":"-0.35","CommodityName":"Silver","NetChange":"-123.00","PriceQuotationUnit":"1 KGS ","SpotPrice":"34815.0"},"USD/INR":{"DateTime":"2015-09-08 11:36:02.0","percentChange":"-0.27","netChange":"-0.18","name":"USD/INR","bidprice":"66.65"},"DXY Index":{"DateTime":"2015-09-08 11:39:40.0","percentChange":"-0.1","netChange":"-0.1","name":"DXY Index","bidprice":"96.13"},"marketstatus":{"currentMarketStatus":"Live"}}]) 

返回的数据是marketlivedata(...) 。 这是调用marketlivedata函数,该函数未在脚本中定义。 因为你已经使用dataType作为jsonp ,所以执行了该函数。

要解决此问题,您可以从JSON服务器更改数据格式(这可能不可能,因为这看起来像第三方服务),或者您可以定义该名称的函数,该函数将在响应到达时调用。

 function getUserData() { $.ajax({ type: "GET", url: "http://mobilelivefeeds.indiatimes.com/homepagedatanew.json", dataType: 'jsonp', crossDomain: true, success: function(data) { // $('#ajexLoaderSec').hide(); console.log(data); }, error: function(e) { console.log(e); } }); }; getUserData(); function marketlivedata(data) { console.log(data); } 
  

当您使用来自另一个域的json数据时,将需要一个回调函数来访问它:

未捕获的ReferenceError:未定义marketlivedata

这里marketlivedata是一个Callback Wrapper函数,它是从你正在服务的服务返回的,所以全局函数的引用必须用jsonpCallback: 'callback'的名字设置或者使用jsonpCallback: 'callback' (更好的一个) ,其中"callback"是响应中的函数。 这个函数实际上是要携带你想要使用的数据,所以必须这样做:

 function getUserData() { $.ajax({ type: "GET", url: "http://mobilelivefeeds.indiatimes.com/homepagedatanew.json", dataType: 'jsonp', crossDomain: true, jsonpCallback: 'marketlivedata', // call the returned function here. success: function(data) { document.body.innerHTML = '
' + JSON.stringify(data) + '

'; // use the data as you need to. }, // you can refere it here error: function(e) { console.log(e); } }); }; getUserData();