Javascript XMLHTTPREQUEST在本地主机上发送GET

问题描述 投票:0回答:1

我正在尝试使用纯JavaScript XMLHTTPREQUEST库发布表单数据。我的javascript函数首先获取所有html表单数据并进行清理,并在将其粘贴到对象之前检查其格式是否正确。然后,普通请求库用于发送带有正确标题的JSON.stringify(Object)。问题是我正在我的Apache localhost上对其进行测试,并且它不会将数据发送到指定的php文件。它仅将数据作为GET请求连接到我的Url标头中。

        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请求?

javascript php post xmlhttprequest localhost
1个回答
0
投票

@@ epascarello给出了正确的诊断来解决我的问题。因此,我正在发布它。即使请求了POST,也已将连接到我的URL的数据和不变的GET请求发送给我

不取消表单提交。

要取消表单提交取决于XmlHttpRequest对象的调用方式。就我而言,我使用绑定到html的onclick事件来调用该函数。

该按钮未设置类型属性,这意味着它默认为提交。

我将按钮属性更改为type='button',这取消了表单提交。我的第二个问题是不执行php文件或未完成设置javascript load事件功能内的请求,这是由于XmlHttpRequest .send属性的第二个参数未设置为相对路径。因此,我的错误路径显示为a

网络请求

404 Not FoundRequest URL:http://localhost/myprojects/pages/localhost/myprojects/pages/app/web_app/getter.php。通过将绝对路径更改为相对路径,POST请求已完成。

© www.soinside.com 2019 - 2024. All rights reserved.