当文本字段包含“)”时,序列化表单数据会导致未捕获的JS异常

时间:2013-07-28 09:59:36

标签: jquery serialization

我将以下代码段绑定到提交按钮

            var formData = $(this).serialize();  
            console.log(formData);
            $.ajax({
                url: 'event_crud.php',
                type: "POST",
                dataType: 'text',
                data: formData,
                success: function(data) {   
                    $.mobile.changePage($("#events"));
                    console.log("Data: "+data+"\n Rebuild the list");
                    update(fromDate, toDate, eventList);    
                    $("ul#event-list").listview("refresh");
                },
                error: function(data) {
                    alert("Whoops! Update event failed! "+data);
                }
            });

我在js控制台中出现错误,当提交的表单中的文本字段包含一个结束括号 - 即“)” - 注意,我没有得到开括号的例外,它没有'无论文本字段中的哪个部分出现(不需要在最后)

以下是序列化表单数据的示例

action=update&eventID=416&type=expense&description=Shopping+)&date=2013-10-17&value=350.0000

这是错误

Uncaught Error: Syntax error, unrecognized expression: ]&date=2013-10-17&value=350.0000')

请注意,右括号已被序列化为方括号。 FWIW,错误参考是jquery-1.7.1.min.js:3

我也试过像这样编码输入

formData = encodeURIComponent(formData);

没有成功。

奇怪的是,AJAX POST似乎成功完成(db已更新),但从不执行changePage操作。

0 个答案:

没有答案