0

我实现了 chrome 扩展,我使用 jquery$.ajax通过 json 从服务器端获取数据,但是返回的响应带有额外的 javascript 代码,这使得error总是触发而不是success虽然响应返回了我从服务器端发送的 json。

ajax 调用:

$.ajax({
    url:'http://www.domain.com/ajax/getTags',
    data:{'cookie':cookie_value},
    type:'get',
    dataType:'json',
    beforeSend:function(){                  
    },
    success:function(data){
    },
    error:function(xhr, status, error){
        alert(xhr.responseText);
    }
}); 

响应是:

    {"status":"error","msg":"<span class='error_msg alert'>Please complete the missing fields.<\/span>"}
    <script type="text/javascript">
      var uid = '3887';
      var wid = '4102';
    </script>
    <script type="text/javascript" src="http://cdn.popcash.net/pop.js"></script>

第一行是服务器发送的实际数据,接下来的所有行都是我不知道它来自哪里的附加数据。

我在服务器端使用了 PHP,这是返回 json 数据的脚本

$json['status'] = 'error';
$json['msg'] = "<span class='error_msg alert'>Please complete the missing fields.</span>";
echo json_encode($json);

怎么了?我该如何解决?

4

1 回答 1

0

您正在调用的服务器端页面正在返回Content-Type:text/html。您可以首先将其设置为application/json在 PHP 脚本中返回。

<?PHP
$data = /** whatever you're serializing **/;
header('Content-Type: application/json');
echo json_encode($data);

正文中的 JS 脚本看起来很可疑(特别是考虑到您不认识此脚本),您是否在所有页面调用中观察到此脚本。它看起来像是某种广告内容交付。您托管的服务器是否属于您?如果是这样,您是否扫描过广告软件/恶意软件?

于 2013-06-16T19:22:13.933 回答