Javascript XMLHTTPREQUEST Post 在本地主机上发送 GET
Javascript XMLHTTPREQUEST Post sending GET on localhost
我正在尝试 POST 使用纯 javascript XMLHTTPREQUEST 库来形成数据。我的 javascript 函数首先获取所有 html 表单数据并对其进行清理,并在将其粘贴到 Object 之前检查其格式是否正确。
然后用正常的请求库发送JSON.stringify(Object)
对的header。问题是我正在我的 Apache localhost 上测试它,它不会将数据发送到指定的 php 文件。它仅将数据连接到我的 Url header 作为 GET 请求。
let reqObj = new XMLHttpRequest();
var elem = document.getElementById(msgContan);
//add event listener for request
reqObj.addEventListener("progress", function(eve) {
if (eve.lengthComputable) {
//show progress on download using view
jsView.elementShowMover(elem, strPos,endPos,moveMs);
document.getElementById(msgElemnt).innerText = Math.round(eve.loaded/eve.total * 100) + "% Complete";
}
});
reqObj.addEventListener("load", function(eve) {
if (reqObj.status >= 200 && reqObj.status < 300) {
//elem.style.display = "none";
console.log('Completed');
}
});
reqObj.addEventListener("error", function(eve) {
document.getElementById(msgElemnt).innerText = "Failed to post data.";
});
reqObj.addEventListener("abort", function(eve) {
document.getElementById(msgElemnt).innerText = "Data post was cancelled.";
});
//set timeout @ 30 seconds
reqObj.timeout = 30000;
//open network request
reqObj.open('POST', 'localhost/myprojects/pages/app/web_app/getter.php');
//set http-headers
reqObj.setRequestHeader('Content-Type', 'application/json');
//send the request
reqObj.send(JSON.stringify(answ.jObj));
谁能告诉我为什么会发生这种情况以及如何在本地主机上测试 POST 请求?
@epascarello 给出了正确的诊断来解决我的问题。所以我发了。
连接到我的 URL 的数据和发送的常量 GET 请求,即使 POST
被请求,也是由于我
not cancelling the form submission.
取消表单提交取决于XmlHttpRequest对象的调用方式。在我的例子中,我使用绑定到 html <button>
的 onclick
事件调用函数。
The button had no type attribute set which meant it defaulted to submit.
我将按钮属性更改为 type='button'
,这取消了表单提交。
我没有执行 php 文件或在集合 javascript load
事件函数中完成请求的第二个问题是由于 XmlHttpRequest .send
属性 的第二个参数未设置为相对路径。因此,我不正确的路径显示了
network request
404 Not Found
与 Request URL:http://localhost/myprojects/pages/localhost/myprojects/pages/app/web_app/getter.php
.
通过将我的绝对路径更改为相对路径,POST
请求已完成。
我正在尝试 POST 使用纯 javascript XMLHTTPREQUEST 库来形成数据。我的 javascript 函数首先获取所有 html 表单数据并对其进行清理,并在将其粘贴到 Object 之前检查其格式是否正确。
然后用正常的请求库发送JSON.stringify(Object)
对的header。问题是我正在我的 Apache localhost 上测试它,它不会将数据发送到指定的 php 文件。它仅将数据连接到我的 Url header 作为 GET 请求。
let reqObj = new XMLHttpRequest();
var elem = document.getElementById(msgContan);
//add event listener for request
reqObj.addEventListener("progress", function(eve) {
if (eve.lengthComputable) {
//show progress on download using view
jsView.elementShowMover(elem, strPos,endPos,moveMs);
document.getElementById(msgElemnt).innerText = Math.round(eve.loaded/eve.total * 100) + "% Complete";
}
});
reqObj.addEventListener("load", function(eve) {
if (reqObj.status >= 200 && reqObj.status < 300) {
//elem.style.display = "none";
console.log('Completed');
}
});
reqObj.addEventListener("error", function(eve) {
document.getElementById(msgElemnt).innerText = "Failed to post data.";
});
reqObj.addEventListener("abort", function(eve) {
document.getElementById(msgElemnt).innerText = "Data post was cancelled.";
});
//set timeout @ 30 seconds
reqObj.timeout = 30000;
//open network request
reqObj.open('POST', 'localhost/myprojects/pages/app/web_app/getter.php');
//set http-headers
reqObj.setRequestHeader('Content-Type', 'application/json');
//send the request
reqObj.send(JSON.stringify(answ.jObj));
谁能告诉我为什么会发生这种情况以及如何在本地主机上测试 POST 请求?
@epascarello 给出了正确的诊断来解决我的问题。所以我发了。
连接到我的 URL 的数据和发送的常量 GET 请求,即使 POST
被请求,也是由于我
not cancelling the form submission.
取消表单提交取决于XmlHttpRequest对象的调用方式。在我的例子中,我使用绑定到 html <button>
的 onclick
事件调用函数。
The button had no type attribute set which meant it defaulted to submit.
我将按钮属性更改为 type='button'
,这取消了表单提交。
我没有执行 php 文件或在集合 javascript load
事件函数中完成请求的第二个问题是由于 XmlHttpRequest .send
属性 的第二个参数未设置为相对路径。因此,我不正确的路径显示了
network request
404 Not Found
与 Request URL:http://localhost/myprojects/pages/localhost/myprojects/pages/app/web_app/getter.php
.
通过将我的绝对路径更改为相对路径,POST
请求已完成。