2013-10-18 95 views
0

我正在进行跨域AJAX调用,并且我不确定如果我做错了什么或API调用的提供者不正确地返回JSON。每当我从API调用得到响应时,它都是一个字符串而不是一个JSON对象。这是我的AJAX调用。跨域AJAX调用返回字符串JSON而不是JSON对象

$.ajax({ 
     async: false, 
     dataType: 'jsonp', 
     url: 'http://cross-domain/getSummaryStat.action', 
     data: { minDailyDate: start_param, maxDailyDate: end_param }, 
     success: function(response) { 
      map = { 
       gamefuse: response["ROM-GF-Live"], 
       facebook: response["ROM-FB-Live"], 
       kongregate: response["ROM-Kongregate-Live"], 
       yahoo: response["ROM-Yahoo-Live"] 
      } 
     }, 
     error: function(xhr, textStatus, errorThrown){ 
      alert('request failed'); 
     } 
    }); 

当响应回来,这里是response.result

"[{"dayRetention1":"0.01453800063053","visit":"601","installs":"203"},{"dayRetention1":"0.122484891199019","visit":"33863","installs":"10949"]" 

注意:我设置数据类型来jsonp,因为它是一个跨域AJAX调用,并且我得到了一个错误,没有它。

+0

是什么让你认为提供程序支持摆在首位JSONP响应? – Quentin

+0

当我设置'dataType:json'时,'error'回调被设置。当我将它设置为'jsonp'时,我实际上得到了一个结果 – user2158382

+0

'dataType:'jsonp''不会*神奇地*使跨域请求工作。服务器需要支持它;它需要返回'callback({json:['data']})'。 –

回答

0

首先,它看起来像返回的字符串甚至没有正确的JSON形式。它在最后缺少一个紧密支架。

如果这不能解决问题,那么这里的问题可能在服务器端。由于JSONP是JSON与填充,你的回报功能不应该:

function_name("the string that I return"); 

相反,你应该有:

function_name({ 
    "name":"Bob Loblaw", 
    "age":40 
}); 
相关问题