使用jQuery ajax post接收PHP参数
我通过jQuery的.ajax方法将数据发送到我的PHP文件。两个文件都在同一个域上。生成此帖子的文件如下所示使用jQuery ajax post接收PHP参数,php,jquery,ajax,post,Php,Jquery,Ajax,Post,我通过jQuery的.ajax方法将数据发送到我的PHP文件。两个文件都在同一个域上。生成此帖子的文件如下所示 $('#pdf').click(function() { var proj_name = $('#proj_name').text(); var date = $('#date').text(); var req_comp_date = $('#req_comp_date').text(); var status
$('#pdf').click(function() {
var proj_name = $('#proj_name').text();
var date = $('#date').text();
var req_comp_date = $('#req_comp_date').text();
var status = $('#status').text();
var secondUserID = $('#secondUserID').text();
var postData = {
"proj_name" : proj_name,
"date" : date,
"req_comp_date" : req_comp_date,
"status" : status,
"secondUserID" : secondUserID,
};
console.log(postData);
$.ajax({
type: "POST",
url: "test.php",
data: postData,
success: function(){
alert(proj_name + ' ' + status);
window.open("test.php");
}
});
});
获取post数据的PHP文件是
//request parameters
$proj_name = $_POST['proj_name'];
$date = $_POST['date'];
$req_comp_date = $_POST['req_comp_date'];
$status = $_POST['status'];
$secondUserId = $_POST['secondUserId'];
echo 'postData: ' . var_dump($_POST);
if ($_POST)){
echo $proj_name;
echo $date;
echo $req_comp_date;
echo $status;
echo $secondUserId;
} else {
echo 'problem';
}
在我的firebug控制台中,我可以看到参数是用.ajax发布的,但我无法通过PHP获取该帖子。有人能帮我吗?谢谢。将错误回调添加到您的
$。如果请求失败,则ajax
调用进行调试
$.ajax({
type: "POST",
url: "test.php",
data: postData,
success: function(){
alert(proj_name + ' ' + status);
window.open("test.php");
},
// Alert status code and error if fail
error: function (xhr, ajaxOptions, thrownError){
alert(xhr.status);
alert(thrownError);
}
});
更新 更改此项:
if ($_POST)){
echo $proj_name;
echo $date;
echo $req_comp_date;
echo $status;
echo $secondUserId;
} else {
echo 'problem';
}
为此:
if ($_POST)){
// Make a array with the values
$vals = array(
'proj_name' => $proj_name,
'date' => $date,
'req_comp_date' => $req_comp_date,
'status' => $status,
'secondUserId' => $secondUserid
);
// Now we want to JSON encode these values to send them to $.ajax success.
echo json_encode($vals);
exit; // to make sure you arn't getting nothing else
} else {
// so you can access the error message in jQuery
echo json_encode(array('errror' => TRUE, 'message' => 'a problem occured'));
exit;
}
现在在jQuery.success
回调中:
success: function(data){ // Our returned data from PHP is stored in "data" as a JSON Object
alert(data.req_comp_date); // access your returned vars like this.
// data.date; // is your posted date.. etc
alert(data.proj_name + ' ' + data.status);
window.open("test.php");
// You can also get your error message like so..
if(data.error) // if its true, we have a error, so display it.
alert('ERROR: ' + data.message);
},
您实际上不必下一步做这件事(jquery在确定返回的数据类型方面做得很好),但是在代码中包含它以理解返回的内容是很好的
$.ajax({ ...
type: "POST",
url: "test.php",
data: postData,
dataType: "json" // <-- Add this to tell jquery, we are being returned a JSON object.
.... });
$.ajax({。。。
类型:“POST”,
url:“test.php”,
数据:postData,
数据类型:“json”//因此,假设您的$.post()中的url是正确的,请在php文件的顶部执行var_dump($_post)。您得到了什么?如果没有,请验证您是否发送到了正确的url。感谢您的帮助。我没有捕获错误。我确实看到了php文件的firebug响应。Array([项目名称]=>项目名称:8.3 PRDx未保存草稿[日期]=>日期:2012-08-03[请求完成日期]=>请求完成日期:无[状态]=>状态:等待[第二个用户ID]=>分配另一个用户编辑此项目请求文档?Nilo Zaratan)所以,我只需要以某种方式将它输出到页面。它不能正确地回显。