我有一个'创建标签'的表单。使用下面的jQuery代码。
$("#createtag").submit(function() { //same as above, but for form submit instead of button click
var newtag = $('#newtag').attr('value');
var type_id = $('#type_id').attr('value');
var company_id = $('#company_id').attr('value');
$('#createtag').load("../contacts/action_createtag.php?newtag="+ newtag + "&type_id=" + type_id + "&company_id=" + company_id).append('#createtags');
return false;
});
但我刚刚意识到,如果'newtag'变量包含一个空格,那么它将会结束。通过firebug观察它,如果没有空间,参数显示如下:
company_id 5495
newtag test
type_id 2
但是当输入空格时,它看起来像这样:
newtag test
有人知道为什么会这样吗?为什么没有将适当的变量传递给加载的页面?
提前致谢!
赖安
答案 0 :(得分:11)
对值使用encodeURIComponent()
:
$('#createtag').load("../contacts/action_createtag.php?newtag="+
encodeURIComponent(newtag) + "&type_id=" + encodeURIComponent(type_id) +
"&company_id=" + encodeURIComponent(company_id)).append('#createtags');
答案 1 :(得分:3)
您需要对变量进行编码。
答案 2 :(得分:1)
我认为您必须将您的空间编码为网址中的%20
,因为如果您将其作为空格传递,则会标记网址的结尾。我认为jQuery load不会自行转义任何特殊字符。
答案 3 :(得分:1)
使用encodeURI()
对新标签值进行编码$('#createtag').load("../contacts/action_createtag.php?newtag="+ encodeURI(newtag) + "&type_id=" + encodeURI(type_id) + "&company_id=" + encodeURI(company_id)).append('#createtags');