2015-06-29 3 views
0

У меня есть следующий 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.

ответ

0

Эта строка обычно появляется, если данные, которые вы передаете, не являются json, или если браузер не может автоматически кодировать ваши данные.

Отладка через инструменты разработчика, чтобы увидеть точный результат от вашего json на chrome, safari firefox. Отдаленные данные будут работать в IE, но не в других браузерах или наоборот. Вы всегда можете использовать encodeUriComponent, чтобы правильно кодировать ваши данные, если это так.

Но основная проблема здесь в том, что браузеры, кроме IE, не получают данные json или хорошо отформатированы json.

+0

спасибо куч за ответ :-) Странно то, что если я вставить URL в веб-поискового устройства в поле URL-адрес на светлячок [или любого другого браузера] в виде: HTTP:// url_to_search_appliance/suggest? token = wa Затем он возвращает действительный текст json, который открывается в блокноте. Однако, когда код запускается, я получаю сообщение об ошибке, указанное в теле метода get_feed_status_json_error(). –

+0

Это потому, что как только код запускается, он не может закодировать ваш json. Вы должны убедиться, что ответ, который вы получаете внутри тела, является действительным json. –

+0

Спасибо. Проблема заключается в том, что я не генерирую json - я получаю ее только от Google Search Appliance и поэтому не могу контролировать, как Google Search Appliance отвечает на мой HTTP-запрос ajax GET. вар д = $ .ajax ({ "URL": theGoogleBoxURL, "Datatype": "JSON", "полной": loadContextMenu, "ошибка": get_feed_status_json_error }); –