如何在Safari 10.13.4中调试FormData(form [0])?

时间:2018-04-03 18:51:20

标签: javascript macos debugging safari

我正在运行一个基于Symfony 2.8的网络应用程序,它使用Ajax将一些表单数据发送回控制器。

因此,一切正常,但自最新的macOS更新到版本10.13.4用户开始报告,提交表单在Safari中不再起作用。 10.13.4上的其他macOS版本和其他浏览器仍然可以正常工作,因此它似乎是Safari中的一个问题。当然我向Apple提交了一份错误报告,但我不认为,我会从那里得到反馈......

所以我试图解决问题:

// jQuery handling the submit button click
...
var data = new FormData(form[0]);
$.ajax({
    url : formUrl,
    type : 'POST',
    data : data,
    contentType: false,
    processData: false,
    context : this,
    success : function(response) {
                ...
    },
    error: function (xhr, ajaxOptions, thrownError) {
        ...
    }
});



// Symfony Controller
...
$form->handleRequest($request);

if ($form->isValid() && !$read_only) {
   // Submitted form data is VALID when not using Safari...
} else {
   // Submitted form data is Invalid when using Safari...

   $errors = $form->getErrors();         // empty
   $errors = $form->getErrors(true);     // empty
   $errors = $form->getErrorsAsString(); // empty
}

因此,使用Safari 10.13.4时提交的表单数据无效,并且对所有其他浏览器都有效。

然而,Symfony功能不会显示任何错误。我假设提交的数据一般无效,没有有效的表单数据。我怎么检查这个?

在Safari中查看Ajax请求内容的最佳方法是什么?如何输出new FormData(...)对象的内容?

知道如何隔离错误吗?

1 个答案:

答案 0 :(得分:0)

你有没有试过普通的'(简单)javascript(没有jQuery)?

var formElement = document.querySelector("form");
var request = new XMLHttpRequest();
request.open("POST", "submitform.php");
request.send(new FormData(formElement));

对此简单表单提交感兴趣。

我应该补充:FormData对象上有一个.getAll()方法。您可console.log()确保值存在。