Javascript 通过Ajax向PHP后端提交表单时返回错误

Javascript 通过Ajax向PHP后端提交表单时返回错误,javascript,php,jquery,html,ajax,Javascript,Php,Jquery,Html,Ajax,我正在构建一个表单,要求用户输入姓名、地址、数量1、数量2和注释 对于数量1和数量2,收音机的值不同 当我提交表格时,我的可变$rate_错误返回值必须输入评级注释;即使它不是空白的 我的收音机输入有问题吗 我是否将amount1变量赋值错误 当用户选择不同的金额时,我需要更改变量的值 HTML 使现代化 对我的javascript进行了一些更改,但现在收到500个内部错误 $("#main-rate").submit(function() {

我正在构建一个表单,要求用户输入姓名、地址、数量1、数量2和注释

对于数量1和数量2,收音机的值不同

当我提交表格时,我的可变$rate_错误返回值必须输入评级注释;即使它不是空白的

我的收音机输入有问题吗

我是否将amount1变量赋值错误

当用户选择不同的金额时,我需要更改变量的值

HTML 使现代化 对我的javascript进行了一些更改,但现在收到500个内部错误

    $("#main-rate").submit(function()
        {
             var address = $('#geocomplete').val();
             var name = $("input[name='landlord_name']").val();
             var amount1 = $("input[name='amount1']").val();
             var amount2 = $("input[name='amount2']").val();         
             var amount3 = $("input[name='amount3']").val();         
             var amount4 = $("input[name='amount4']").val();
             var amount5 = $("input[name='amount5']").val();
             var amount6 = $("input[name='amount6']").val();
             var amount7 = $("input[name='amount7']").val();
             var comment = $('#comment').val();                                

             var dataString = {
             name: name,
             address: address,
             amount1: amount1,
             amount2: amount2,
             amount3: amount3,
             amount4: amount4,
             amount5: amount5,
             amount6: amount6,
             amount7: amount7,
             comment: comment

            }


            if (dataString.name == '' || dataString.address == '' || dataString.amount1 == '' || dataString.amount2 == '' || dataString.amount3 == '' || dataString.amount4 == '' || dataString.amount5 == '' || dataString.amount6 == '' || dataString.amount7 == '' || dataString.comment == '')
            {
                console.log("Please Fill All Fields");
            }  else
        {
            // AJAX Code To Submit Form.
            $.ajax({
                type: "POST",
                url: "path/to/url",
                data: dataString,
                cache: false,
                success: function(result)
                {
                   console.log(result);

                    $('rate-section').html(
                        '<div><h1>THANKS FOR RATING!</h1></div>'
                     );


                    return false;


                }
            });
        }
        return false;
    });
});

正如@ShaunakD指出的,您没有正确地将数据发送到服务器。如果您的所有输入都用字母“a”填写,它仍然会提交,但PHP收到的是“aaaaa”,从技术上讲不是这样的,因为下面的收音机和数量1&2分配问题没有说明传递了什么变量

我建议他的第一种方法将您的dataString分配行更改为:

 var dataString = {
   name: name,
   address: address,
   amount1: amount1,
   amount2: amount2,
   comment: comment
 };
您当前的实现在检索amount1和amount2的值时会遇到问题。您正在submit函数中为onchange分配事件。您应首先删除每个无线电输入的id属性,并将其赋值替换为:

 var amount1 = $("input[name='amount1']").val();
 var amount2 = $("input[name='amount2']").val();
编辑:为下面我的第一条评论提供更多上下文:

 $("#main-rate").submit(function()
 {


    var address = $('#geocomplete').val();
    var name = $("#name").val();
    var comment = $('#comment').val();  
    var amount1 = $('input[name="amount1"]').val();
    var amount2 = $('input[name="amount2"]').val();

   //Remove this entirely
   /*
   var amount1 = document.getElementsByName('amount1');
   for (var i = amount1.length; i--;) {
       amount1[i].onchange = function() {

             amount1 = this.value;
             console.log(amount1);
         }
     }
   var amount2 = document.getElementsByName('amount2');
   for (var i = amount2.length; i--;) {
       amount2[i].onchange = function() {

             amount1 = this.value;
             console.log(amount2);
         }
   }
   */

祝你好运

通过ajax传递的数据应该是{name:'value'}或name=value&name2=value2格式如果在某些浏览器中按f12打开开发人员工具并转到网络选项卡,则可以看到表单传递的所有内容。调试您为什么没有选择某些可以使用的值是很有帮助的。序列化以获得正确格式的数据。嘿,Steve,那么我应该将.onchage函数与新变量表达式var amount1=$input[name='amount1'].val;一起移到提交事件之外吗?我看不出onchange事件处理的循环有什么用途。要做到用一行、sans循环和onchange事件处理就可以做到的事情,还有很长的路要走。简单地说,删除并替换VarAmount1和2分配,并使用我的建议循环onchange,如果您仍然有问题,请告诉我。干杯这样做更有意义。它现在正在提交,但我从服务器收到状态为500的内部错误。您在哪里看到500错误?在开发工具控制台中?“path/to/url”是否正常工作?您的PHP代码似乎也没有向响应返回/打印任何内容,只是设置了似乎在任何地方都无法使用的变量。是的,它表示加载资源失败:服务器响应的状态为500 Internal server Error(内部服务器错误)
 var dataString = {
   name: name,
   address: address,
   amount1: amount1,
   amount2: amount2,
   comment: comment
 };
 var amount1 = $("input[name='amount1']").val();
 var amount2 = $("input[name='amount2']").val();
 $("#main-rate").submit(function()
 {


    var address = $('#geocomplete').val();
    var name = $("#name").val();
    var comment = $('#comment').val();  
    var amount1 = $('input[name="amount1"]').val();
    var amount2 = $('input[name="amount2"]').val();

   //Remove this entirely
   /*
   var amount1 = document.getElementsByName('amount1');
   for (var i = amount1.length; i--;) {
       amount1[i].onchange = function() {

             amount1 = this.value;
             console.log(amount1);
         }
     }
   var amount2 = document.getElementsByName('amount2');
   for (var i = amount2.length; i--;) {
       amount2[i].onchange = function() {

             amount1 = this.value;
             console.log(amount2);
         }
   }
   */