0

我正在使用 ajax/json 将值发送到 php 函数,然后该函数将在页面上显示数据。我正在发送两个值$hours$memberID,但我似乎只能检索$hours而不是$memberID。我通过 Firebug 运行该页面,在 javascript 页面上,两个变量的值在发送之前就被读取了。在 PHP 表单中,我运行了多个条件/回显语句以打印出两个值,但仅$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 />";

编辑:如果我运行 a var_dump($_POST['memberID']);,它会打印出NULL. 如果我运行 a var_dump($_POST),它会打印出来array(2) { ["hours"]=> string(1) "1" ["member3"]=> string(8) "5101813/" }

编辑:我在 PHP 代码中添加了使用member3. 编辑 2:这就是整个 Javascript 函数。PHP 代码是我处理数据的全部。

4

3 回答 3

0

问题是您的示例并没有真正向我们展示您正在使用的代码。

以下复制了您的 AJAX 请求,这是此问题的本质:

$.post(
    'hours_subtract.php',
    {
        hours : "test-val-1",
        memberID : "test-val-2"
    },
    function(resp) {
        // Handle the response
    }
);

只有两个值被发送到服务器 -hoursmemberID

但是,您声明var_dump($_POST)显示:

{ ["hours"]=> string(1) "1" ["member3"]=> string(8) "5101813/" }

但是在您的 ajax 请求中,没有这样的member3,并且memberID$_POST 中也不存在。正如其他人所提到的,也许 memberID 的值为 null 并且没有被发送 - 但这并不能解释member3来自哪里。

我建议弄清楚你为什么member3在那里,它来自哪里,并在memberIDjavascript 端对值进行调试以找出它是否为空。

于 2013-04-03T17:59:47.330 回答
0

在使用 jQuery Ajax 时,如果发送的数据参数之一为 null 或未定义,则将其丢弃,不会发送到服务器。由于您没有在 PHP(服务器端)中获取此属性,因此很可能在初始客户端页面上没有正确设置它。

memberID.value // check this value

您可以检查 memberID.value 是否返回预期值?

于 2013-04-03T17:34:42.517 回答
0

我在我的网站上遇到了类似的问题。事实证明,我的 ajax 请求没有$_POST像我预期的那样通过流发送数据。它实际上是通过请求正文发送的。

要访问它,我必须执行以下操作:

json_decode(file_get_contents(“php://input”));

这从请求正文中提取信息并将 json 数据(这是我将数据发送到服务器的格式)解码为 PHP 可用的内容。不确定,但您可能会遇到类似的问题。

于 2013-04-03T17:37:40.480 回答