0

我有以下jQuery:

var msg = $("#newmessage").val();
var user = $("#userchat").val();

var filename = "/inc/chat.php?msg="+msg+"&user="+user; 
alert(filename);
$("#chatData").load(filename);

当“msg”中没有空格时,#chatData 加载正常并发布变量。

当它确实有一个空间时,我只会得到一个空白的 div。里面没有任何信息。

如果我加载将数据插入数据库的 php 文件,并手动键入相同的 GET 数据,它工作正常。

这是怎么回事?

4

5 回答 5

2

尝试使用

encodeURIComponent(msg)
于 2012-08-01T14:33:05.787 回答
2

还要考虑:

$("#chatData").load('/inc/chat.php', 
    { 'msg' : $("#newmessage").val(), 'user' : $("#userchat").val() }
);

如果需要,由 jQuery 完成 URI 编码。

您不必担心 URI 编码,因为使用了 POST 方法,因为数据是作为对象(源)提供的。

在这种情况下,无论如何 POST 可能都比 GET 好。

如果您$_GET在 php 文件中使用,则需要使用$_REQUEST$_POST.

于 2012-08-01T14:36:21.960 回答
0

您必须在使用encodeURIComponent()发送之前对您的消息进行编码,并使用urldecode()在服务器站点上进行解码。

这样做将转义/编码 url 中不允许的特殊字符,否则会破坏您的查询字符串(如&消息中的 a 否则会开始一个新参数)。

于 2012-08-01T14:34:24.223 回答
0

您可以使用escape,encodeURIencodeURIComponent, 但这escape每个浏览器都支持的唯一方法,尽管大多数现代浏览器都支持后者。

参考

看看这个文档,它很好地解释了这三个。

于 2012-08-01T14:34:26.377 回答
0

该空间可能会导致问题 - 尝试使用 javascript encodeURIComponent()

var msg = encodeURIComponent($("#newmessage").val());
var user = encodeURIComponent($("#userchat").val());
于 2012-08-01T14:35:19.090 回答