AJAX将POST变量发送给PHP

时间:2015-01-26 21:11:22

标签: javascript php ajax

我习惯用jQuery发送AJAX请求。我现在发现自己的任务是必须使用'vanilla'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);

1 个答案:

答案 0 :(得分:1)

 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));

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