У меня есть следующий HTML и связанный с Jquery код:Ошибка при получении данных обратно от Google Search Appliance с помощью любого браузера, кроме IE
<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>
Этот код работает прекрасно, когда я просматриваю с помощью Internet Explorer (версия 10). Я начинаю вводить в поле searchField, и по мере того как я делаю так, запросы ajax отправляются в мое поисковое устройство Google, которое возвращает список возможных вариантов завершения json, и они (в свою очередь) применяются к выпадающему списку ниже поля поиска, что позволяет мне выберите один из них, чтобы заполнить поле поиска.
Howeveer при попытке выполнить эту же задачу с помощью Firefox, Safari или Chrome, я получаю сообщение об ошибке:
«SyntaxError: JSON.parse: неожиданный конец данных в строке 1 колонки 1 из данных JSON http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js Линия 4 "
Я искал эту ошибку, но для жизни я не могу понять, почему она будет работать на IE, но не на любом другом браузере. Любая помощь очень ценится.
спасибо,
David.
спасибо куч за ответ :-) Странно то, что если я вставить URL в веб-поискового устройства в поле URL-адрес на светлячок [или любого другого браузера] в виде: HTTP:// url_to_search_appliance/suggest? token = wa Затем он возвращает действительный текст json, который открывается в блокноте. Однако, когда код запускается, я получаю сообщение об ошибке, указанное в теле метода get_feed_status_json_error(). –
Это потому, что как только код запускается, он не может закодировать ваш json. Вы должны убедиться, что ответ, который вы получаете внутри тела, является действительным json. –
Спасибо. Проблема заключается в том, что я не генерирую json - я получаю ее только от Google Search Appliance и поэтому не могу контролировать, как Google Search Appliance отвечает на мой HTTP-запрос ajax GET. вар д = $ .ajax ({ "URL": theGoogleBoxURL, "Datatype": "JSON", "полной": loadContextMenu, "ошибка": get_feed_status_json_error }); –