Javascript 使用JQuery从PHP获取JSON响应
现在,我已经积累并切碎了大约5到6本不同的教程,但我仍然无法找出问题所在 使用JQuery Mobile(phonegap)向PHP服务器发送和接收数据。我似乎无法让JQuery脚本获取响应。 服务器上的PHP:Javascript 使用JQuery从PHP获取JSON响应,javascript,php,jquery,json,cordova,Javascript,Php,Jquery,Json,Cordova,现在,我已经积累并切碎了大约5到6本不同的教程,但我仍然无法找出问题所在 使用JQuery Mobile(phonegap)向PHP服务器发送和接收数据。我似乎无法让JQuery脚本获取响应。 服务器上的PHP: <?php // Set up associative array $data = array('success'=> true,'message'=>'Success message: worked!'); // JSON encode and send bac
<?php
// Set up associative array
$data = array('success'=> true,'message'=>'Success message: worked!');
// JSON encode and send back to the server
echo json_encode($data);
?>
JQuery函数(正在调用):
$(函数(){
$('#inp').keyup(函数(){
var postData=$('#inp').val();
$.ajax({
类型:“POST”,
数据类型:“json”,
数据:postData,
发送前:函数(x){
if(x&&x.overrideMimeType){
x、 overrideMimeType(“application/json;charset=UTF-8”);
}
},
url:“removedmyurlfromhere”,
成功:功能(数据){
//“data”是一个JSON对象,我们可以直接访问它。
//评估数据。成功成员并采取适当措施。。。
if(data.success==true){
警报(“结果”);
$('.results').html(data.message);
}否则{
$('.results').html(data.message);
}
}
});
});
});
很抱歉格式化了,这一切都变成了一对一对的复制。删除了我的url
我知道函数正在启动,因为如果我删除警报(“此处”);并将其置于显示的ajax调用之上
有人知道为什么success函数不调用吗?在任何浏览器上,都不会在div中显示类结果
谢谢 在PHP中,添加JSON内容类型标题:
header('Content-Type: application/json');
另外,试着听完整的对话,看看你是否得到了回复:
$.ajax({
// ....
complete: function (xhr, status) {
$('.results').append('Complete fired with status: ' + status + '<br />');
$('.results').append('XHR: ' + (xhr ? xhr.responseText : '(undefined)'));
}
// ...
});
$.ajax({
// ....
完成:功能(xhr,状态){
$('.results').append('Complete fired with status:'+status+'
');
$('.results').append('XHR:'+(XHR?XHR.responseText:'(未定义));
}
// ...
});
请记住相同的域起源,将jsonp与回调一起使用一直对我很有帮助,这意味着向php脚本中添加一个$\u GET['callback']
,并用'('.json\u encode($Array)。')包装json\u encode,以获得正确的格式
该页面上的最后一个演示是我找到的最好的例子。嘿,我也遇到了同样的问题
首先,我使用了$.getJSON等等。。。。但是由于某种原因没有起作用
但是普通的ajax调用起了作用。。我的页面返回一个json输出。。尝试删除“数据类型”
我使用了从我粘贴的下面的站点复制的代码
$.ajax({
type: "POST",
url: "some.php",
data: { name: "John", location: "Boston" }
})
.done(function( msg ) {
alert( "Data Saved: " + msg );
});
下面是我如何使用和处理json输出的代码
$.ajax({
type: "GET",
url: "json.php",
data: { searchword: q, projid:prid }
})
.done(function( jsonResult ) {
var str='';
for(var i=0; i<jsonResult.length;i++)
{
//do something here.. with jsonResult."yournameof "
alert(jsonResult[i].id+jsonResult[i].boqitem);
}
});
$.ajax({
键入:“获取”,
url:“json.php”,
数据:{searchword:q,projid:prid}
})
.done(函数(jsonResult){
var-str='';
for(var i=0;i看起来像跨域请求
通过更改以下内容来尝试:
dataType : "json"
到
我知道已经很晚了,但可以简单地像这样处理
var postData = {'inp': $('#inp').val()};
$.ajax({
type: "POST",
data: postData,
url: 'removedmyurlfromhere', // your url
success: function (response) {
// use exception handling for non json response
try {
response = $.parseJSON(response);
console.log(response); // or whatever you want do with that
} catch(e) {}
},
error: function( jqXHR, textStatus, errorThrown ) {},
complete: function( jqXHR, textStatus ) {}
});
在进行ajax调用时,您在浏览器中得到了什么响应?您实际上得到了200个响应吗?这是一个跨域请求吗?它只是一个具有以下关联的数组:{“success”:true,“message”:“success message:hooray!”}添加tak3er建议的头文件我得到了一个.json文件。文件存储在本地,而php文件则存储在网页外部的服务器上。我怀疑这是一个跨域请求。我尝试过使用jsonp并添加回调参数。这不起作用either@WelshJohn那么你是说,在查看使用浏览器的开发工具(或Firebug或类似工具)调用AJAX,您将得到一个200响应,其中包含您期望的JSON正文?添加了上述标题,没有任何更改。没有警报,也没有div结果。现在直接访问页面将导致打开或保存.JSON文件。虽然添加标题是个好主意,但如果您在ajax选项中提供了数据类型,则不需要添加标题。该文件打开是因为您是浏览器不理解json mime类型。您是否看到我通过调用complete:编辑的响应以查看是否得到响应?complete函数在相应的div.ok cool中激发并生成complete Fired!。这意味着您的代码正在工作,但响应有问题。您有两个选项:获得一些不同的响应t from 200 OK或您的JSON无效。如果您有带firebug的Google chrome或Firefox,这将非常有用。打开devtools/firebug,转到网络选项卡,单击您发出的请求以查看响应。我还更新了js代码,包括打印状态和响应
dataType : "jsonp"
var postData = {'inp': $('#inp').val()};
$.ajax({
type: "POST",
data: postData,
url: 'removedmyurlfromhere', // your url
success: function (response) {
// use exception handling for non json response
try {
response = $.parseJSON(response);
console.log(response); // or whatever you want do with that
} catch(e) {}
},
error: function( jqXHR, textStatus, errorThrown ) {},
complete: function( jqXHR, textStatus ) {}
});