[英]ajax calls fails with error “Unexpected token”
我有一个进行ajax调用并从数据库中检索以下数据的php应用程序:
{
"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 :
当它在mongo doc id“ 5717a3873747106e60a087ec”之后看到第一个“:”时,基本上就快死了
我尝试过的
我已经验证了jsonlint中的返回数据,并且看起来该数据是有效的json。
我不确定还需要检查什么。 我正在为我的ajax调用的数据类型使用jsonp vs json。 但是除此之外,我没有主意。
有什么建议么?
编辑1
我也应该说我找到了这篇文章: jQuery.ajax()调用返回JSON.parse意外字符错误
但我不知道如何编辑json标头。 我目前也在玩代码,看看如何做到这一点
编辑2:
当我将jsonp更改为json时,出现另一条错误消息:
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost' is therefore not allowed access.
变量“ request”包含如下内容:
http://10.1.1.1/mytestapp/index.php/export/get_widgets/available
我以为问题是上述URL与我用来启动该应用程序的“ http:// localhost / mytestapp ” URL进行了比较。 因此,尝试像这样启动我的网络应用程序:
http://10.1.1.1/mytestapp/index.php/
但仍然失败,并显示相同的错误。
所以我的问题的根本原因是json vs jsonp。 我将ajax调用中的数据类型更改为json。 然后,我没有传递完整的URL,而是传递了这样的应用程序名称:
var request = '/testapp/index.php/export/get_widgets/available';
154 console.log(request);
155 $.ajax({
156 url:request,
157 type:'GET',
158 dataType:'json',
159 success: function(returnDataFromController) {
160 if (returnDataFromController)
161 {
162 console.log(returnDataFromController);
163 console.log(returnDataFromController.id);
164 //build table contents
165 }
166 },// end success
167 error: function(jqXHR, textStatus, errorThrown)
168 {
169 console.log(errorThrown);
170 }
171 });//end ajax.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.