У меня есть PHP приложение, которое делает вызов Ajax и извлекает следующие данные из моей базы данных:Ajax звонки завершается с ошибкой «Неожиданная знак»
{
"5717a3873747106e60a087ec": {
"_id": {
"$id": "5717a3873747106e60a087ec"
},
"phone": "18455100020",
"fax": false,
"emergency": false,
"site": "ABC",
"sip_uri": "",
"associated_users": [],
"location": "New Zealand",
"reservation": [{
"reserved": true,
"reserved_for": "COO12"
}],
"available": true
}
}
Это код, который я должен сделать вызов Ajax :
$(document).ready(function(){
var request = BASEPATH + 'index.php/export/get_widget/available';
console.log(request);
$.ajax({
url:request,
type:'GET',
dataType:'jsonp',
success: function(returnDataFromController) {
if (returnDataFromController.status)
{
console.log(returnDataFromController);
//build table contents
}
},// end success
error: function(jqXHR, textStatus, errorThrown)
{
console.log(errorThrown);
}
});//end ajax.
}); //end document ready
Когда я проверяю консоль, я вижу, что запрос не был со следующим сообщением об ошибке:
Uncaught SyntaxError: Unexpected token :
Это в основном умирает, когда он видит, что первый «:» после Монго Идентификатор документа «5717a3873747106e60a087ec»
Что я пробовал:
Я проверил достоверность данных, возвращаемых в jsonlint и это выглядит как данные действительны json.
Я не уверен, что еще проверить. Я играю с jsonp vs json для типа данных моего вызова ajax. Но кроме этого у меня нет идей.
Любые предложения?
EDIT 1
Я должен также сказать, что я нашел этот пост: jQuery.ajax() call is returning JSON.parse unexpected character error
, но я не знаю, как изменить заголовки JSon. В настоящее время я также играл с кодом, чтобы увидеть, как это сделать
EDIT 2:
Когда я изменяю JSONP в JSON, я получаю еще одно сообщение об ошибке:
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost' is therefore not allowed access.
Переменная «запрос» содержит примерно следующее:
http://10.1.1.1/mytestapp/index.php/export/get_widgets/available
Я думал, проблема в том, что выше упомянутый URL-адрес сравнивается с URL-адресом «http://localhost/mytestapp», который я использовал для запуска приложения. Так пытались запустить свой веб-приложение, как это вместо:
http://10.1.1.1/mytestapp/index.php/
, но он все еще терпит неудачу с такой же ошибкой.
'DATATYPE: '' JSON,' 'не DATATYPE: 'JSONP',' – MonkeyZeus
вы запрашиваете JSONP , это означает, что вы возвращаетесь ДОЛЖНЫ выглядеть как вызов функции JS, например. 'somecallback (" json data here ")'. если вы возвращаете только данные json сами, без оболочки вызова функций, то это не jsonp. –
Также обратите внимание, что в возвращаемом json нет ключа 'status', но это будет следующая ошибка после того, как вы исправите тип данных. – jeroen