0

我也将序列化数据和一个变量传递给 php,但我在数据部分收到了一个意外的令牌“(”错误

如果我从数据部分取出 'lid':userID,它工作正常。

$("#cname").submit(function (e) {
    e.preventDefault();
    $.ajax({
        url: 'someurl',
        crossDomain: true,
        type: 'post',
        data: {$("#cname").serialize(), 'lid':userID},
        success: function (data) {
            $("#result").html(data);
            $.mobile.changePage($('#page-tasklist'));
        },
    });
});
4

2 回答 2

2

.serialize()方法的输出是一个字符串,如action=login&UserName=&Password=&Site=Test. 所以试试这个。

$("#cname").submit(function (e) {
    e.preventDefault();
    $.ajax({
        url: 'someurl',
        crossDomain: true,
        type: 'post',
        data: $("#cname").serialize() + '&lid=' + userID,
        success: function (data) {
            $("#result").html(data);
            $.mobile.changePage($('#page-tasklist'));
        },
    });
});

此外,如果您只是lid: userID从 ajax 请求中删除,您实际上仍然会收到错误,因为{$("#cname").serialize()}不是有效的 json。该data参数可以接受编码字符串(如.serialize()返回值)或 json 对象。

以下 2 个示例是等效的:

$.ajax({url:'index.php',type:'POST',data:{z:1,y:2}});
$.ajax({url:'index.php',type:'POST',data:'x=1&y=2'});
于 2013-06-10T22:50:41.103 回答
0

尝试添加到变量,然后推送新的键/值。

$("#cname").submit(function (e) {
    var serializeData = $("#cname").serializeArray();
    serializeData.push({'lid':userID})
    e.preventDefault();
    $.ajax({
        url: 'someurl',
        crossDomain: true,
        type: 'post',
        data: serializeData,
        success: function (data) {
            $("#result").html(data);
            $.mobile.changePage($('#page-tasklist'));
        }
    });
});
于 2013-06-10T22:51:47.940 回答