我有一个带表单的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;
}
}
});
}
答案 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/