我习惯于用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 = {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));
这应该可以做到。数据需要作为查询字符串传递。此函数将从你提供的数据对象创建一个查询字符串,并对 uri 组件进行编码,如 @AlexV 和 @Quentin 所述。