Jquery 使用IE以外的任何浏览器从google search appliance获取数据时出错

Jquery 使用IE以外的任何浏览器从google search appliance获取数据时出错,jquery,json,google-search-appliance,Jquery,Json,Google Search Appliance,我有以下html和相关联的jquery代码: <div id="searchFieldDiv"> <input id="searchField" name="search1" type="TEXT"></input> </div> <div style="position: relative" id="showdata"> </div> <script TYPE="text/javascript"> <!-

我有以下html和相关联的jquery代码:

<div id="searchFieldDiv">
<input id="searchField" name="search1" type="TEXT"></input>
</div>
<div style="position: relative" id="showdata">
</div>
<script TYPE="text/javascript">
<!--
var loadContextMenu = function (jqXHR, textStatus)
{
    var theJson = jqXHR.responseJSON;
    $('#searchField').autocomplete({
        source: theJson
    });
}

var get_feed_status_json_error = function (jqXHR, textStatus, errorThrown) {
  alert("Got error:  " + jqXHR.responseXML );
};


$("#searchFieldDiv").keyup(function() 
{
  var theString = $("#searchField").val(); 
  var theGoogleBoxURL = "http://url_to_search_appliance/suggest?token="
    +  $("#searchField").val(); 
    var d = $.ajax({
        "url": theGoogleBoxURL,
        "dataType": "json",
        "complete": loadContextMenu,
        "error":  get_feed_status_json_error
  });
});
-->
</script>

当我使用InternetExplorer(版本10)浏览时,这段代码工作得很好。我开始在字段searchField中键入内容,这样,ajax请求被发送到我的google search appliance,它返回可能完成的json列表,这些请求(反过来)被应用到searchField下面的下拉列表中,允许我选择其中一个来填充搜索字段

但是,当我尝试使用Firefox、Safari或Chrome执行相同的任务时,会收到一条错误消息:

“SyntaxError:JSON.parse:JSON数据的第1行第1列出现意外的数据结尾 第4行“

我一直在用谷歌搜索这个错误,但就我的一生而言,我不明白为什么它能在IE上工作,但不能在任何其他浏览器上工作。非常感谢您的帮助

谢谢


David。

如果您传递的数据不是json,或者浏览器无法自动编码您的数据,通常会出现这一行

通过开发人员工具进行调试,以查看在chrome、safari和firefox上json的确切结果。很多时候,你发送的数据会在IE上工作,但不会在其他浏览器上工作,或者反过来。在这种情况下,您可以始终使用
encodeUriComponent
对数据进行正确编码


但这里的主要问题是,IE以外的浏览器没有获得json数据或格式良好的json

感谢您的回复:-)奇怪的是,如果我将web搜索设备的url粘贴到firefox[或任何其他浏览器]的url字段中,格式为:然后返回在记事本中打开的有效json文本。但是,当代码运行时,我会收到get_feed_status_json_error()方法体中指示的错误消息。这是因为一旦代码运行,它就无法对json进行编码。您必须确保在body内部收到的响应是有效的json。谢谢。我的问题是,我没有生成json,我只是从google搜索设备接收json,因此无法控制google搜索设备如何响应我的http ajax GET请求。var d=$.ajax({“url”:谷歌邮箱url,“数据类型”:“json”,“complete”:loadContextMenu,“error”:get\u feed\u status\u json\u error});谢谢你的帮助。我想把这事弄清楚。我的ajax调用是:var d=$.ajax({“url”:GoogleboxURL,“数据类型”:“json”,“complete”:loadContextMenu,“error”:get\u feed\u status\u json\u error});我试图省略“dataType”字段,希望jqueryajax调用能够计算出返回的数据是什么,但没有成功。当我在浏览器中手动执行http get时,返回的东西看起来非常像json,这让我感到困惑。我不知道我需要在哪里进行任何编码或解码。基本上,错误是说,您无法发送json数据类型,因为数据不是有效的json,我以前多次收到它,当我将数据类型更改为“text”时,它工作了。您可以尝试使用json解析或stringify。以手动解析json。