无法从表单值中使用jquery发送json数据

时间:2015-12-15 01:46:29

标签: javascript jquery json ajax

我正在创建一个json对象,我在其中从表单中提取字段,然后使用jquery Ajax POST来发送数据。但是当我按下提交后看到我的网络选项卡时,我基本上得到了json标题,但是应该从表单中提取的所有值都是空白的,除了我正在硬编码的值。请注意,我的json数据也有一个类型为room的嵌套json。

以下是我的jquery部分: -

 var formData={
        "checkInDate": $("#checkInDate").val(),
        "checkOutDate": $("#checkOutDate").val(),
        "roomsWanted":$("#roomsWanted").val(),
        "room":{
            roomType: $("input[name=roomType]:checked").val(),
            roomProperty:"non-smoking"
        }

    };
$("#checkAvailabilityForm").submit(function(e){
        e.preventDefault();

        $.ajax({
            type: 'post',
            url: '',
            dataType: 'json',
            data: JSON.stringify(formData),
            contentType: 'application/json',
            success: function(dataRecieved){
                var dataRecieved= $.trim(dataRecieved);
                if(dataRecieved === ''){

                }else{

                }
            }

        });
    });

2 个答案:

答案 0 :(得分:1)

formData函数内移动.submit()的声明。现在页面加载的方式,然后var formData = ...立即设置formData的值(到新的空表单的值)。

您的代码应如下所示:

$("#checkAvailabilityForm").submit(function(e){
    e.preventDefault();

    var formData={
        "checkInDate": $("#checkInDate").val(),
        "checkOutDate": $("#checkOutDate").val(),
        "roomsWanted":$("#roomsWanted").val(),
        "room":{
            roomType: $("input[name=roomType]:checked").val(),
            roomProperty:"non-smoking"
        }
    };

    $.ajax({
        type: 'post',
        url: '',
        dataType: 'json',
        data: JSON.stringify(formData),
        contentType: 'application/json',
        success: function(dataRecieved){
            var dataRecieved= $.trim(dataRecieved);
            if(dataRecieved === ''){

            }else{

            }
        }

    });
});

答案 1 :(得分:0)

你不需要将json字符串化为json,因为它

data: formData