我有一个php应用程序进行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 :
当它看到第一个"它时基本上就会死亡:"在mongo doc id" 5717a3873747106e60a087ec"
之后我尝试过的事情:
我已经验证了jsonlint中的返回数据,看起来数据是有效的json。
我不确定还有什么要检查。我正在使用jsonp vs json玩我的ajax调用的数据类型。 但除此之外,我没有想法。
有什么建议吗?
编辑1
我还应该说我发现了这篇文章:jQuery.ajax() call is returning JSON.parse unexpected character error
但我不知道如何编辑json标头。 我目前还在玩代码以了解如何执行此操作
编辑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
我认为问题在于上面提到的网址与" http://localhost/mytestapp"我用来启动应用程序的URL。所以试着像这样启动我的网络应用程序:
http://10.1.1.1/mytestapp/index.php/
但它仍然失败并出现同样的错误。
答案 0 :(得分:0)
所以问题的根本原因是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.