Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AJAX向PHP发送POST变量_Javascript_Php_Ajax - Fatal编程技术网

Javascript AJAX向PHP发送POST变量

Javascript AJAX向PHP发送POST变量,javascript,php,ajax,Javascript,Php,Ajax,我习惯于用jQuery发送AJAX请求。我现在发现自己的任务是使用“香草”JS发送它们。利用我有限的知识,我设法使一切正常,除了随请求一起传递数据。在我的数据库中,应该传递的两个变量总是以NULL形式填写。我在这里找到的每个示例都显示了jQuery方法,这一点我没有问题 谁能告诉我我做错了什么?我认为这与数据的格式有关,但我无法理解 这是请求的代码。请求对象构建在createXMLHttp()函数中 var xmlHttp = createXMLHttp(); var data = {Refer

我习惯于用jQuery发送AJAX请求。我现在发现自己的任务是使用“香草”JS发送它们。利用我有限的知识,我设法使一切正常,除了随请求一起传递数据。在我的数据库中,应该传递的两个变量总是以NULL形式填写。我在这里找到的每个示例都显示了jQuery方法,这一点我没有问题

谁能告诉我我做错了什么?我认为这与数据的格式有关,但我无法理解

这是请求的代码。请求对象构建在createXMLHttp()函数中

var xmlHttp = createXMLHttp();
var data = {Referrer: document.referrer, Path: window.location.pathname};
xmlHttp.open('post', '/PagePilotSiteHits.php', true);
xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlHttp.send(data);
var data={referer:document.referer,路径:window.location.pathname};
函数buildQueryString(数据)
{
var dataKeys=Object.keys(数据);
var queryString=“”;
对于(变量i=0;i

这应该可以做到。数据需要作为查询字符串传递。此函数将从您提供的数据对象创建查询字符串,并对@AlexV和@Quentin提到的uri组件进行编码。

您需要将数据作为查询字符串传递,不要忘记使用encodeURIComponent()转义数据
xmlHttp.send(encodeURIComponent(data))将中断数据。您需要在数据的每个组件上运行
encodeURIComponent
,而不是整个组件。@Quentin。对,在这里禁食:-)
 var data = {Referrer: document.referrer, Path: window.location.pathname};

 function buildQueryString(data)
 {
     var dataKeys = Object.keys(data);
     var queryString = "";
     for (var i = 0; i < dataKeys.length; ++i)
     {
         queryString += "&" + dataKeys[i] + "=" + encodeURICompenent(data[dataKeys[i]]); 
     }
     return queryString.substr(1);
 }

 xmlHttp.send(buildQueryString(data));