Send form data using ajax

前端 未结 7 1031
遇见更好的自我
遇见更好的自我 2020-12-01 04:45

I want to send all input in a form with ajax .I have a form like this.

7条回答
  •  没有蜡笔的小新
    2020-12-01 05:14

    I have written myself a function that converts most of the stuff one may want to send via AJAX to GET of POST query.
    Following part of the function might be of interest:

      if(data.tagName!=null&&data.tagName.toUpperCase()=="FORM") {
        //Get all the input elements in form
        var elem = data.elements;
        //Loop through the element array
        for(var i = 0; i < elem.length; i++) {
          //Ignore elements that are not supposed to be sent
          if(elem[i].disabled!=null&&elem[i].disabled!=false||elem[i].type=="button"||elem[i].name==null||(elem[i].type=="checkbox"&&elem[i].checked==false))
            continue; 
          //Add & to any subsequent entries (that means every iteration except the first one) 
          if(data_string.length>0)
            data_string+="&";
          //Get data for selectbox
          if (elem[i].tagName.toUpperCase() == "SELECT")
          {
            data_string += elem[i].name + "=" + encodeURIComponent(elem[i].options[elem[i].selectedIndex].value) ;
          }
          //Get data from checkbox
          else if(elem[i].type=="checkbox")
          {
            data_string += elem[i].name + "="+(elem[i].value==null?"on":elem[i].value);
          }
          //Get data from textfield
          else
          {
            data_string += elem[i].name + (elem[i].value!=""?"=" + encodeURIComponent(elem[i].value):"=");
          }
        }
        return data_string; 
      }
    

    It does not need jQuery since I don't use it. But I'm sure jquery's $.post accepts string as seconf argument.

    Here is the whole function, other parts are not commented though. I can't promise there are no bugs in it:

    function ajax_create_request_string(data, recursion) {
      var data_string = '';
      //Zpracovani formulare
      if(data.tagName!=null&&data.tagName.toUpperCase()=="FORM") {
        //Get all the input elements in form
        var elem = data.elements;
        //Loop through the element array
        for(var i = 0; i < elem.length; i++) {
          //Ignore elements that are not supposed to be sent
          if(elem[i].disabled!=null&&elem[i].disabled!=false||elem[i].type=="button"||elem[i].name==null||(elem[i].type=="checkbox"&&elem[i].checked==false))
            continue; 
          //Add & to any subsequent entries (that means every iteration except the first one) 
          if(data_string.length>0)
            data_string+="&";
          //Get data for selectbox
          if (elem[i].tagName.toUpperCase() == "SELECT")
          {
            data_string += elem[i].name + "=" + encodeURIComponent(elem[i].options[elem[i].selectedIndex].value) ;
          }
          //Get data from checkbox
          else if(elem[i].type=="checkbox")
          {
            data_string += elem[i].name + "="+(elem[i].value==null?"on":elem[i].value);
          }
          //Get data from textfield
          else
          {
            if(elem[i].className.indexOf("autoempty")!=-1) {
              data_string += elem[i].name+"=";
            }
            else
              data_string += elem[i].name + (elem[i].value!=""?"=" + encodeURIComponent(elem[i].value):"=");
          }
        }
        return data_string; 
      }
      //Loop through array
      if(data instanceof Array) {
        for(var i=0; i

提交回复
热议问题