2012-02-13 103 views
0

我在其他服务器上调用一个PHP脚本来提取数据库信息,并返回一个JSON数组。但ajax调用不能调用跨域,所以我通过一个本地PHP脚本运行它,该脚本对远程PHP脚本进行CURL调用。该脚本将一个JSON数组返回给curl脚本(getURL.php)并返回回响。编写返回到控制台的数据看起来是正确的,但它将每个字符计数为一个数组元素。所以我想也许它是作为文本回来的。但是添加$ .parseJSON(数据)会引发错误。删除它说arr长度是170.任何想法?通过CURL调用返回JSON

function getPrograms() { 

    var data = "url=http://www.wdctravel.com/co-op/getPrograms.php"; 
    $.ajax ({ 
     url: "getURL.php", 
     data: data, 
     success: function(data) { 
      var arr = $.parseJSON(data); 
      postPrograms(arr); 
     } 
    }); 
}  

function postPrograms(arr) { 
    var len=arr.length; 
    alert (len); 
    for(var i = 0; i < len; i++) { 
     if (i % 2 == 0) { 
      $('#programs tr:last').append("<tr></tr>"); 
     } 
     $('#programs tr:last').append('<td><input type="text" size="3" name="CoOpID~' + arr[i]['id'] + '" /></td><td>' + arr[i]['name'] + '&nbsp;<span style="color: red;"><span id="cs' + arr[i]['id'] + '">' + arr[i]['remain'] + '</span> spots left.</span></td>'); 
     var c = $("#programs tr:last td").length; 
    }; 
} 

回答

0

检查您的JSON响应是否格式错误。

传递格式不正确的JSON字符串可能会导致抛出异常,例如 。例如,以下是所有格式不正确的JSON字符串:

{test:1}(测试周围没有双引号)。 {'test':1} ('test'使用单引号而不是双引号)。另外 如果您传递任何内容,一个空字符串,null或未定义,则将从parseJSON返回'null' 。在浏览器提供JSON.parse的本地实现的情况下,jQuery使用它来解析字符串。有关JSON格式的详细信息,请参见http://json.org/

http://api.jquery.com/jQuery.parseJSON/

如果在远程服务器控制,我建议使用JSONP。 http://en.wikipedia.org/wiki/JSONP