我已经积累并砍掉了大约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 back to the server
echo json_encode($data);
?>
JQuery函数(正在调用):
<script type="text/javascript">
$(function () {
$('#inp').keyup(function () {
var postData = $('#inp').val();
$.ajax({
type: "POST",
dataType: "json",
data: postData,
beforeSend: function (x) {
if (x && x.overrideMimeType) {
x.overrideMimeType("application/json;charset=UTF-8");
}
},
url: 'removedmyurlfromhere',
success: function (data) {
// 'data' is a JSON object which we can access directly.
// Evaluate the data.success member and do something appropriate...
if (data.success == true) {
alert('result');
$('.results').html(data.message);
} else {
$('.results').html(data.message);
}
}
});
});
});
</script>
很抱歉格式化,所有这一切都是对形状复制它。删除了我的网址。
我知道该函数正在触发,因为如果我删除警报('here');并把它放在它显示的ajax调用之上。
有人知道为什么成功函数没有调用? div中没有显示任何浏览器上的类结果。
谢谢!
答案 0 :(得分:0)
在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)'));
}
// ...
});
答案 1 :(得分:0)
在这里记住相同的域名起源,使用带回调的jsonp一直对我有帮助,这意味着在你的php脚本中添加$_GET['callback']
并用'('.json_encode($Array).')'
包装json_encode以进行正确的格式化
http://api.jquery.com/jQuery.getJSON/
该页面上的最后一个演示是我找到的最好的例子。
答案 2 :(得分:0)
嘿,我有同样的问题
首先我使用$ .getJSON等等等等......但由于某种原因没有用...
但正常的ajax调用工作..我的Page返回json输出,你试着删除“数据类型”
我使用了从JQUERY网站复制的代码,该代码位于我粘贴的
之下$.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);
}
});
答案 3 :(得分:0)
看起来像跨域请求。
通过更改:
来尝试dataType : "json"
到
dataType : "jsonp"
答案 4 :(得分:0)
我知道现在已经很晚了。但它可以像
一样处理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 ) {}
});