jQuery发布变量未传递给PHP



已求解: 显然,唯一出错的是我忘记在查询中的参数周围添加引号。感谢大家的帮助!

我遇到了一个问题,由于某种原因,应该在我的 PHP 文件中填写的变量是空的。我正在做一个 $.ajax 帖子。 下面的代码。 我已经确保在填充数据的模型上通过 console.log() 发送时实际填充数据。

记录的模型:

addedTime: Fri Jul 26 2019 11:01:07 GMT+0200{}
customer: "Test"
message: "test"
message_end_datetime: "2019-07-29"
message_start_datetime: "2019-07-27"

正在开机自检的控制器:

$scope.InsertNew = function(){
var model = {
"addedTime" : new Date(),
"customer" : document.getElementById("customer").value,
"message" : document.getElementById("message").value,
"message_start_datetime" : document.getElementById("startTime").value,
"message_end_datetime" : document.getElementById("endTime").value
};
console.log(model);
var dump = $.ajax({
type: "POST",
url: "http/NewMessage.php",
data: JSON.stringify(model),
contentType: "application/json; charset=utf-8",
success: function () {
console.log("succes");
}
});
}

然后在新消息中.php:

<?php
include "include.php"; // has the query php file. 
// $addedTime = $input['addedTime'];
$addedTime = $_POST["addedTime"];
$customer = $_POST["customer"];
$message = $_POST["message"];
$message_start_datetime = $_POST["message_start_datetime"];
$message_end_datetime = $_POST["message_end_datetime"];
newMessageQuery($addedTime,$customer,$message,
$message_start_datetime,$message_end_datetime);

最后在查询文件中:

// doenst work
function  newMessageQuery($addedTime,$customer,$message,$message_start_datetime,$message_end_datetime){
$recordsQuery = " INSERT into customernews (added_datetime,customer,message,message_start_datetime,message_end_datetime) 
values ('2019-07-26',$customer,$message,'2019-07-26','2019-07-26') "; 
return executeObjectQuery($recordsQuery);  // executes the query  
}
//works
function newMessageQuery($addedTime,$customer,$message,$message_start_datetime,$message_end_datetime){
$recordsQuery = " INSERT into customernews (added_datetime,customer,message,message_start_datetime,message_end_datetime) 
values ('2019-07-26','test','testklant','2019-07-26','2019-07-26') "; 
return executeObjectQuery($recordsQuery);    
}

如上所示,我已经仅使用默认的硬编码值测试了查询,然后它可以工作。

但是,当使用应该传递的参数值之一时,它不起作用,我没有收到任何php错误,因为它确实在javascript中返回了成功,这让我相信变量没有在NewMessage中填充。

当我用 post 传递值时,我做错了什么还是别的什么?

编辑: 我得到字符串(0)"作为响应,响应如下。

Request URL: ../http/NewMessage.php
Request Method: GET
Status Code: 200 OK
Remote Address: 10.0.28.167:80
Referrer Policy: no-referrer-when-downgrade
Connection: Keep-Alive
Content-Length: 13
Content-Type: text/html; charset=UTF-8
Date: Fri, 26 Jul 2019 09:43:15 GMT
Keep-Alive: timeout=5, max=99
Server: Apache/2.4.23 (Win32) OpenSSL/1.0.2h PHP/5.6.28
X-Powered-By: PHP/5.6.28
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
Accept-Encoding: gzip, deflate
Accept-Language: nl-NL,nl;q=0.9,en-US;q=0.8,en;q=0.7
Cache-Control: no-cache
Connection: keep-alive
Host: retail-web-03
Pragma: no-cache
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36

解决: 显然,唯一出错的是我忘记在查询中的参数周围添加引号。感谢大家的帮助!

您是在请求Body发送数据。$_POST方法只针对form-data,这里的格式是application/json

所以你需要使用file_get_contents()而不是$_POST.你的代码会像,

$inputJSON = file_get_contents('php://input');
$input = json_decode($inputJSON, TRUE);
$addedTime = $input["addedTime"];
$customer = $input["customer"];
$message = $input["message"];
$message_start_datetime = $input["message_start_datetime"];
$message_end_datetime = $input["message_end_datetime"];

最新更新