2012-08-01 64 views
0

我有以下的jQuery:快速jQuery的.load聊天不工作

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

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

“味精”时,没有一个空间吧,#chatData加载罚款,并张贴变量。

当它有一个空间,我只是得到一个空白的div。没有任何信息。

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

怎么回事?

回答

2

使用

encodeURIComponent(msg) 
+0

谢谢。我知道这是我不知道的傻事。 – Chud37 2012-08-01 14:34:05

0

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

这样做会逃跑未在URL允许或否则会打破你的查询字符串(如在你的消息&,否则将开始一个新的参数)/特殊字符进行编码。

0

您可以使用escapeencodeURIencodeURIComponent,但escape浏览器支持的唯一方法,虽然大部分现代浏览器支持后者。

参考

看看this文件,这很好地解释所有这三个方面做得很好。

0

的空间可能会导致一个问题 - 请javascript的encodeURIComponent()

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

还认为:

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

URI编码完成后,如果需要的话,的jQuery。

不必为使用POST方法,因为数据被作为一个对象(source)提供担心URI编码。

在这种情况下,POST可能比GET更好。

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

+0

这是一个很好的方法,因为它利用'load'的设计方式 - 'data'对象被设计来解决这个问题。 – Austin 2012-08-01 14:37:32