在我的PHP文件中,我将一些变量从输入框传递到一个链接,该链接通过jQuery的ajax load
函数在其URL中加载一个页面。
这整个系统运行良好,但它只适用于单字变量。无论何时涉及到空间,我的Ajax调用都会中断。我假设这是一个编码问题,但我也有一些疑问。基本上,它归结为我的PHP文件中的这行代码,这导致了一个骚动。
是否可以确定这是否格式正确,或者为什么这会破坏多世界查询? “关键字”变量已应用jQuery的trim
函数。
echo $("#addminimal").load("/addmnml?topic='.$_GET['keyword'].'") ;
感谢。
答案 0 :(得分:3)
您根本不需要进行任何编码。 Jquery为您处理它:
这是一种方式:
echo ' $("#addminimal").load("/addmnml", {topic: "'.$_GET['keyword'].'"}) ';
这是有效的,因为.load()
以键值对方式接受第二个参数,并为您进行编码。
或者更好,使用php json:
$params = json_encode(array("topic" => $_GET['keyword']));
echo ' $("#addminimal").load("/addmnml", '.$params.') ';
希望这会有所帮助。干杯
答案 1 :(得分:2)
在发送到服务器之前使用encodeURIComponent
对空格进行编码:
$.ajax
({
type: 'POST',
url: 'APage.aspx',
data: 'word=' + encodeURIComponent('word with space'),
success: function(Data, TextStatus, XHR)
{
},
error: function(XHR)
{
}
});
答案 2 :(得分:1)
您需要对值进行编码...
使用PHP:
echo ' $("#addminimal").load("/addmnml?topic='.urlencode($_GET['keyword']).'") ';
或在javascript方面:
echo ' $("#addminimal").load("/addmnml?topic="+encodeUriComponent('.$_GET['keyword'].') ';
答案 3 :(得分:0)
仅为记录,我使用了encodeURIComponent,如下所示
d_value = $("#dropdown1").val();
d_value = encodeURIComponent(d_value);
$("#dropdown2").load("drop.php?choice=" + d_value);
它基本上用于根据第一个下拉列表的选择填充第二个下拉列表。