通过ajax的序列化表单数据只返回一个字母(" r")

时间:2017-02-23 03:47:58

标签: php jquery ajax forms

我有一个表单,我通过ajax提交给像这样的php函数:

var formData = $(form).serialize();
    $.ajax({
        type : 'post',
        dataType : 'json',
        url : myAjax.ajaxurl, //we can use this value because in our php file we used wp_localize_script
        context:this,
        data : {action: 'tps_save_rental_details', formData:formData },
        success: function(response) {
            alert (response.testing);
        }
    });

我认为通过使用.serialize()它会以json形式传递表单数据然后我可以在我的php函数中使用它,如下所示:

$formData = $_REQUEST['formData'];

$rentalType = $formData['rentalType'];

$result['testing'] = $rentalType;

(租赁类型是第一个文本输入字段的名称/ ID)

但是当我在我的ajax成功函数中提醒$ results [' testing']的返回值时,我只得到一个字符,字母" r"它甚至不会出现在该领域的价值中(即#34; class-education")。

这是通过ajax传递表单输入值的最佳方法吗?如果是这样,我可能在这里做错了什么。

1 个答案:

答案 0 :(得分:1)

serialize方法只接受表单元素并将它们以字符串形式放置。 "varname=val&var2=val2"

您可以在php中获取这些值,如:

$params = array();
parse_str($_GET, $params);

特定于OP的案例:

$formData = array();
parse_str($_REQUEST['formData'], $formData);
$result['testing'] = $formData['rentalType'];