我正在使用ajax / json将值发送到php函数,然后该函数将在页面上显示数据。我发送了两个值$hours
和$memberID
,但我似乎只能检索$hours
而不是$memberID
。我通过Firebug运行页面,在javascript页面上,两个变量的值在发送之前就被读取了。在PHP表单中,我运行了多个条件/ echo语句来打印出两个值,只显示$hours
。有什么想法吗?
PHP:
$result = array();
if(!empty($_POST['hours'])) {
$result['type'] = "success";
$result['memberID'] = (int)$_POST['memID'];
$result['hours'] = (int)$_POST['hours'];
$result = json_encode($result);
echo $result;
}
使用Javascript:
//numberofMembers is the total number of entries in the database
function subtractHours(numberofMembers) {
document.body.style.cursor = "wait";
var hours = document.getElementById("hours");
var i = 1;
var studentID;
while(i < numberofMembers) {
studentID = document.getElementById("member"+i);
alert(studentID.value);
if(studentID && studentID.checked) {
$.ajax({
type : 'post',
datatype: 'json',
url : 'hours_subtract.php',
data : {hours : hours.value, memID : studentID.value},
success: function(response) {
if(response == 'success') {
alert('Hours subtracted!');
} else {
alert('Error!');
}
}
});
//$.post( "subtract.php", {person: personId, personSalary: personSalary} );
}
i++;
}
}
PHP(HTML表单):
echo "<input type='checkbox' name='member{$attNumber}' id='member{$attNumber}' value=$studentID/>$attendees<br />";
编辑:如果我运行var_dump($_POST['memberID']);
,则会打印出NULL
。如果我运行var_dump($_POST)
,则打印出array(2) { ["hours"]=> string(1) "1" ["member3"]=> string(8) "5101813/" }
。
编辑:我添加了使用member3
的PHP代码。
编辑2:这是整个Javascript函数。 PHP代码就是我处理数据的全部代码。
答案 0 :(得分:0)
使用jQuery Ajax时,如果发送的数据参数之一为null或未定义,则将被丢弃,而不会发送到服务器。由于您没有在PHP(服务器端)中获取此属性,因此可能未在初始客户端页面上正确设置该属性。
memberID.value // check this value
你能检查一下memberID.value是否正在返回预期值?
答案 1 :(得分:0)
我的网站上有类似的问题。事实证明,我的ajax请求没有像我预期的那样通过$_POST
流发送数据。它实际上是通过请求机构发送的。
要访问它,我必须执行以下操作:
json_decode(file_get_contents(“php://input”));
这从请求体中提取信息并将json数据(我将数据发送到服务器的格式)解码为PHP可用的内容。不确定,但您可能遇到了类似的问题。
答案 2 :(得分:0)
问题是您的示例并没有真正向我们展示您正在使用的代码。
以下重复您的AJAX请求,这是此问题的本质:
$.post(
'hours_subtract.php',
{
hours : "test-val-1",
memberID : "test-val-2"
},
function(resp) {
// Handle the response
}
);
只有两个值发送到服务器 - hours
和memberID
但是,您声明var_dump($_POST)
显示:
{ ["hours"]=> string(1) "1" ["member3"]=> string(8) "5101813/" }
但是在你的ajax请求中,没有这样的member3
,并且$ {POST中不存在memberID
。正如其他人所提到的那样,memberID的值可能为null且未发送 - 但这并不能解释member3
的来源。
我建议找出为什么你有member3
,它来自哪里,并对javascript端的memberID
值进行调试,以确定它是否为空。