使用表单数据而不是使用ajax的查询字符串

时间:2016-10-05 16:33:27

标签: javascript ajax forms form-data

我正在更新旧网站并遇到打嗝。我正在重写联系表单以使用ajax而不是正常的表单提交/感谢页面。表单操作发送到第三方站点(我无权访问解析数据的PHP)并且它与基本表单一起使用。当我使用ajax提交时,表单提交,不会抛出任何错误,但是第三方代码放入数据库的数据是空白的。相同的表单名称,相同的值。这是我的js:

$("#contactForm input,#contactForm textarea").jqBootstrapValidation({
    preventSubmit: true,
    submitError: function($form, event, errors) {
        // additional error messages or events
    },
    submitSuccess: function($form, event) {
        event.preventDefault(); // prevent default submit behaviour
        // get values from FORM
        var fname = $("#fname").val();
        var lname = $("#lname").val();
        var email = $("#email").val();
        var cphone = $("#cphone").val();
        var comments = $("#comments").val();
        var address = $("#address").val();
        var city = $("#city").val();
        var zip = $("#zip").val();
        $.ajax({
            url: "https://my.serviceautopilot.com/AddEstimate.aspx?id=*************&wid=****************",
            type: "POST",
            dataType: 'jsonp',
            processData: false,
            data: {
                fname: fname,
                lname: lname,
                cphone: cphone,
                email: email,
                comments: comments,
                address: address,
                city: city,
                zip: zip
            },
...

在原始子目录中,数据如下所示: form data vs query string 我相信它是因为数据作为原始表单数据传递,但作为第二个示例中查询字符串的一部分。我假设这是正确的吗?代码有不同的问题吗?

我尝试使用不起作用的表单数据对象,它仍然出现在查询字符串中,但仍然显示为空白。我试过调整数据类型,内容类型,processdata = false,但没有运气。在过去,我可以访问服务器端代码并​​且没有调试问题并且可以轻松修复此类问题,但此时我有点迷失。谢谢大家。

2 个答案:

答案 0 :(得分:2)

readBeacons.values.max()

JSONP请求必须是GET请求(它们通过生成具有dataType: 'jsonp', 属性的<script>元素来工作。他们不能包括请求正文。

如果你想发出POST请求,请不要使用JSONP。

(就此而言,无论如何都不要使用JSONP,这是一个肮脏的黑客来解决同源策略,我们已经有多年的CORS了。)

答案 1 :(得分:0)

如果您使用第三方收集表单数据,则必须使用Post方法使用CURL请求。