IOS中FormData的替代方法是什么?

时间:2018-07-29 19:20:17

标签: javascript jquery ajax forms

我正在使用xmlHTTPRequest(以及$ .ajax)发送表单(包含一些文本输入和多文件输入)而没有刷新页面。 我正在使用FormData在PC(Chrome)上成功发送表单。 当我在IPAD(IOS)中运行页面时,该页面不起作用。 在尝试知道错误在哪里之后,似乎其中不支持FormData。 就我而言,还有其他选择吗?

var formDataH = new FormData($('#FeedbackForm')[0]);
    var xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = function() {
    if (this.readyState == 4) {
        if (this.status == 200){
            alert(xhttp.responseText);
        $('#FeedbackBar').html('<span class="text-success">Sent...</span>');
        $('#FeedbackForm')[0].reset();
        }else{
            $('#FeedbackBar').html('<span class="text-danger">Error Sending, try again...</span>');
        }
        setTimeout(function() {$('#FeedbackBar').html('');}, 2000);
      }
    };

    xhttp.open("POST", "conf/feedbackpost.php", true);    
    xhttp.send(formDataH);

1 个答案:

答案 0 :(得分:0)

我能够像这样在iOS 10.3.3(iPhone 5C)上的Safari中使用FormData:

var formData = new FormData(document.getElementById('form1'));
var xhr = new XMLHttpRequest();

xhr.onreadystatechange = function(event) {
  if (xhr.readyState == 4) {
    if ((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304) {
      // do something
    } else {
      // do something
    }

    // clean
    xhr = null;
  }
}

xhr.open('post', 'http://server/upload.php', true);
xhr.send(formData);
<form id="form1" action="upload.php" method="POST" enctype="multipart/form-data">
  <label id="bChoose" for="file">Choose</label>
  <input id="file" type="file" name="file" />
</form>