2009-09-09 68 views
4

我在人員列表中進行搜索。我希望它能夠在飛行中顯示結果,所以它確實如此。但有一個鏈接,我需要的,它應該是這樣的:jQuery html()和&

chatid=18&userid=45&create=new 

但結果後,通過該顯示:

$.get('/ajax.php', {sec: 'search_users', ajax: 1, search_for: $(this).val()}, function(data) 
{ 
    $(".rBoxContentStaff").html(data); 
}); 

我得到這樣的結果:

chatid=18&userid=45&create=new 

鏈接不起作用。這似乎發生在html()和append()中。

我發現沒有解決方案,所以我不得不改變鏈接的觸發。

+0

什麼樣的元素是「.rBoxContentStaff」? – inakiabt 2009-09-09 15:16:45

+0

這並不重要inakiabt,由ajax請求的HTML特殊字符,不會被瀏覽器解釋..這就是爲什麼鏈接出來的方式 – yoda 2009-09-09 15:19:38

+0

你嘗試返回一個帶有ID的JSON數組,並將它們與一個&? – janoliver 2009-09-09 15:32:38

回答

1

html特殊字符當被ajax請求時,不會被瀏覽器解釋..這就是爲什麼鏈接以這種方式出現。你可以做的一件事是在JavaScript中的sstring替換:

data = str.replace(/&/, "&"); 
+0

數據返回一切正確,如果我提醒它,這發生在html()似乎。 – Belgurinn 2009-09-09 15:25:38

+0

我已經試過這個 – Belgurinn 2009-09-09 15:26:11

+0

然後不要返回完整的鏈接,返回它作爲一個JSON數組,例如 – yoda 2009-09-09 15:49:34

2

你說你試圖設置鏈接路徑正確嗎?
如果是這樣試試這個

$(".rBoxContentStaff").attr("href", data); 

.html()正在改變&到HTML &(&),但使用.attr("href")設置鏈接路徑,並將其與&作品以及

+0

,我知道我正在尋找這個解決方案。 – Belgurinn 2009-09-09 15:27:51

2

而是這樣做的:

$(".rBoxContentStaff").html(data); }); 

試試這個:

$(".rBoxContentStaff").append(data); }); 

text()轉義html字符...我找不到任何關於html()轉義字符(事實上,它的文檔似乎是另有說明。
但是,在jmein的建議中使用警報進行測試後,它會對特殊字符進行編碼。 Append()不這樣做。

+0

我不認爲這是問題。如果他在將數據提交到.html()之前發出警報,它將顯示爲&但如果他在將.html()顯示爲& – 2009-09-09 17:33:04

+1

@jmein之後發出警報,那麼我建議在他的get命令中指定「text」 ,因爲,正如他所說,他不是url或html編碼他的ajax數據。 – 2009-09-09 17:42:30

+0

它不是他正在返回那不工作(或至少聽起來不像)。當他使用.html()設置鏈接路徑時() – 2009-09-09 17:49:17

0

您應該嘗試使用$ .ajax()函數而不是$ .get()。

使用$ .ajax()您可以自己指定數據類型(並使用其他選項)。

嘗試這樣:

$.ajax({ 
type: "GET", 
url: "/ajax.php", 
data: "sec=search_users&ajax=1&search_for="+$(this).val(), 
cache: false, 
dataType: "html", 
success: function(html){ 
    $(".rBoxContentStaff").html(html); 
} }); 
+0

我試過這個,它沒有工作。我看了一下html()中會發生什麼。看起來,這是innerHTML的工作,它改變&到& – Belgurinn 2009-09-10 11:18:41

+0

如果html()是問題,那麼wouldnt $(「#test」)。html(「test&test」);還顯示測試&測試? 我仍然認爲你正在返回XML數據而不是明文。 – DaMayan 2009-09-10 11:37:10

+0

問題在於,當您通過.html放入&時,它會顯示爲&,但實際值爲&,就像您單擊該鏈接時看到的一樣,或者如果您在放置「&」後提醒了.html()在它之內 – 2009-09-10 13:07:33

0

還有還有轉換獲得只是文本的方式(在<a />只是一個幫手):

$('<a /'>).html(data).text() 

這將移動&amp;&,以及所有其他特殊字符,如&imp;等...