Javascript PHP表单和Ajax的问题

Javascript PHP表单和Ajax的问题,javascript,php,ajax,forms,Javascript,Php,Ajax,Forms,我正在尝试在不重新加载页面的情况下将包含数据的表单提交到php文件。我还有一些js代码,在单击下一个btn时更改表单名称和值。我有10个问题都在一个页面上,我让它与PHP一起工作,但现在我试图得到每页1个问题。我在“网络”选项卡中查看,似乎正在发送xhr请求,但在我的database.php文件中,我编写了$user\u anwser=$\u POST['quick\u 1'];var转储了它,我得到一个空值。下面是ajax代码 form.addEventListener("submit", f

我正在尝试在不重新加载页面的情况下将包含数据的表单提交到php文件。我还有一些js代码,在单击下一个btn时更改表单名称和值。我有10个问题都在一个页面上,我让它与PHP一起工作,但现在我试图得到每页1个问题。我在“网络”选项卡中查看,似乎正在发送xhr请求,但在我的database.php文件中,我编写了$user\u anwser=$\u POST['quick\u 1'];var转储了它,我得到一个空值。下面是ajax代码

form.addEventListener("submit", function(e){

    if (ind < 10){
        e.preventDefault();
    } else {
        form.setAttribute("action", "results.php");
    }

    let data = new FormData(form);

    let xhr = new XMLHttpRequest();
    xhr.open('POST', '../private/database.php');
    xhr.onload = function() {
        if (xhr.status === 200) {
            // if the response is json encoded
            let response = JSON.parse(xhr.responseText); // i get a parse error there

            if (response.message == 'valid') {
                // redirect here
            }
        }
    // }
    xhr.send(data); 
    }
});
form.addEventListener(“提交”,函数(e){
如果(ind<10){
e、 预防默认值();
}否则{
setAttribute(“action”、“results.php”);
}
让数据=新表单数据(表单);
设xhr=newXMLHttpRequest();
open('POST','../private/database.php');
xhr.onload=函数(){
如果(xhr.status==200){
//如果响应是json编码的
让response=JSON.parse(xhr.responseText);//我在那里得到一个解析错误
如果(response.message=='valid'){
//重定向到这里
}
}
// }
发送(数据);
}
});

数据是否包含您期望的内容?浏览器调试工具中的后续HTTP请求是否包含您期望的内容?
database.php
如何处理表单数据?调试时,问题首先具体出现在哪里?首先,向onload函数添加
console.log(xhr.responseText)
。第二,向我们展示您的php代码如果网络请求有数据发送,那么问题必须在php端。请添加PHP代码。告诉我这部分:
if(ind<10){e.preventDefault();}else{form.setAttribute(“action”、“results.PHP”);}
…这里的意图是什么?如果ind小于10,它将阻止默认回发,然后ajax调用启动,一切正常。但是,如果ind为10或更大,您将更改表单的action属性(因此它将提交到另一个端点),并且您不会阻止它执行正常的回发,但同时ajax请求仍将继续。这没有什么意义…你真的想发回并进行AJAX调用吗?我没有将database.php文件移动到results.php,而是将AJAX请求的路径更改为results.php,因为index.php、quick.php和results.php位于同一个公共目录中。现在,当我通过测验时,我在results.php上进行了var_转储,但我只得到了最后一个值lol,但至少你解决了我最大的问题,非常感谢Petya!