将XMLHttpRequest传递给PHP会导致空$ POST

时间:2015-11-28 23:15:16

标签: javascript php arrays post xmlhttprequest

到目前为止,我一直在研究一些代码,并且已经进行了一段时间的故障排除,我很确定我的语法是正确的。我一直不得不在破坏的测试环境中工作,所以我不能使用普通的断点来测试后端。

我在javascript中有以下功能:

function ns_submit_form_inpage(path, data){
    var request = new XMLHttpRequest();
    request.onreadystatechange = function() {
        if (request.readyState == 4) {
            alert("Message Sent");
        }
    }
    request.open('POST', path, true);
    request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
    var temp_string = array_to_string(data);
    alert("data:"+ temp_string);
    request.send(data);
}

PHP中的以下代码:

<?php
    mail("my_email@example.com", "Array: ". print_r($_POST, true), "From:test@example.com");
?>

我调用该函数,将我的路径与数组一起传递。我收到一封电子邮件和一个适当的警报,所以我知道我的函数被调用,正确的文件被点击并触发。 A也知道在发送数据之前,它们的数据正确地存在于键控数组中(例如first_name :: bob,last_name :: doe)。但是,我收到的电子邮件显示“Array:Array()”并通过我的“Message Sent”警告进行确认。

我已经缩小了我认为我的错误可能存在的地方,并且我已经完成了几乎所有的事情,感觉就像阵列正在消失在互联网的以太之中。

1 个答案:

答案 0 :(得分:0)

我发现了我的问题。如上所述,我将数据作为数组发送。虽然PHP 将接受的数据作为数组读取,并且我发送数组,但是发送数组的方法(application / x-www-form-urlencoded) )不使用数组。它使用字符串。因此,我必须将数组更改为格式为“first_name = bob&amp; last_name = doe&amp; foo = bar”的字符串。现在它有效。