Javascript特殊字符

时间:2012-01-03 13:14:27

标签: javascript jquery ajax

我有一个带表单的html。 用户提交表单后,表单中的值将被发送到带有ajax的数据库。 我的问题是,用户在其中一个字段中提交带有加号(+)的表单,加号将不会显示在数据库中。

我的代码:

function update()
{
    var branch_id = 1;
    var saleTitle = $("#title").val();
    var saleText = $("#text").val();
    var imgSrc = $("#imgSrc").html();
    var datastr ='branch_id=' + branch_id + '&saleTitle=' + saleTitle +
                 '&saleText=' + saleText + '&imgSrc=' + imgSrc + '&func=update';

         $.ajax({
         type: "POST",
         url: "update.php",
         data: datastr,
         success: function(msg){
             //alert( "Data Saved: " + msg );
             if (msg == "")
             {
                 $("#message").html("Update was successful!");
             }
             else
             {
                 $("#message").html("Error") + "   " + msg;
             }
         }
     });
}

3 个答案:

答案 0 :(得分:3)

在具有加号

的字段上使用:encodeURIComponent(xxx)
encodeURIComponent('~!@#$%^&*(){}[]=:/,;?+\'"\\')

将导致:

~!%40%23%24%25%5E%26*()%7B%7D%5B%5D%3D%3A%2F%2C%3B%3F%2B'%22%5C

答案 1 :(得分:1)

传递一个对象,而不是一个字符串。

var dataobj = { 
    branch_id : branch_id,
    saleTitle : saleTitle,
    saleText  : saleText,
    imgSrc    : imgSrc,
    func      : "update"
};
// …
data: dataobj

然后jQuery将负责转发数据(+意味着这个数据格式的空间)并将其连接到application / x-www-form-urlencoded数据中

答案 2 :(得分:0)

您可以尝试jQuery Serialize     http://api.jquery.com/serialize/