【发布时间】:2019-07-26 09:23:00
【问题描述】:
已解决: 显然唯一出错的是我忘记在查询中的参数周围添加引号。感谢大家的帮助!
我遇到的问题是,由于某种原因,应该在我的 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");
}
});
}
然后在 NewMessage.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 传递值时我做错了什么还是其他什么?
编辑: 我得到 string(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
已解决: 显然唯一出错的是我忘记在查询中的参数周围添加引号。感谢大家的帮助!
【问题讨论】:
-
您错误地期望 $_POST 为此类请求填充。
-
客户:$("#customer").val() 试试这个
-
@Jack 我应该把那个放在哪里?在进行发布请求时在数据中?
-
在不起作用的查询中,您仍然必须像使用硬编码的那样将值括在单引号中。它是
'$customer'而不是$customer,除非这是一个 INT 类型字段并且 $customer 返回一个数值。$message相同,应该是'$message'
标签: javascript php jquery post