2012-08-01 91 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