Jquery Ajax加载仅适用于单个字变量

时间:2011-07-06 05:46:01

标签: php jquery ajax echo

在我的PHP文件中,我将一些变量从输入框传递到一个链接,该链接通过jQuery的ajax load函数在其URL中加载一个页面。

这整个系统运行良好,但它只适用于单字变量。无论何时涉及到空间,我的Ajax调用都会中断。我假设这是一个编码问题,但我也有一些疑问。基本上,它归结为我的PHP文件中的这行代码,这导致了一个骚动。

是否可以确定这是否格式正确,或者为什么这会破坏多世界查询? “关键字”变量已应用jQuery的trim函数。

echo  $("#addminimal").load("/addmnml?topic='.$_GET['keyword'].'")  ;

感谢。

4 个答案:

答案 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);

它基本上用于根据第一个下拉列表的选择填充第二个下拉列表。