2012-07-08 80 views
0
$('#groupnamesearch').blur(function() { 
    str = $('#groupnamesearch').val() 
    $.get("injectgroup.php", { 
     name: str 
    }, function (data) { 
     //here i guess str.replace data 
     $('#aspecforgroup').val(data); 
    }); 
}); 

這使我的結果,如:[ 「45054」, 「55905」, 「42306」]操縱(str.replace)陣列回來過自動完成數據

我想去除所有[ ]」他們的,所以我只有數字和,性格。

如何操作該走了過來Ajax請求之前,它的輸入字段中得到填充的信息?

謝謝:)

+0

是您的結果字符串? 「[\」1 \「,\」2 \「,\」3 \「]」或者它是一個實際的數組?如果您的號碼是實際的號碼,您不應在發送結果時引用它們。 (即:沒有像00001那樣有很多零) – NickSlash 2012-07-08 12:21:10

回答

1

如果您在找回結果data是一個實際的字符串 - 我認爲它必須是如果方括號越來越顯示在您的「aspecforgroup」場 - 然後如下,你可以刪除這些字符:

data = data.replace(/[\[\]"]/g, ""); 

或者你可以告訴jQuery的(即 jQuery,你正在使用?)將響應視爲JSON,在這種情況下,它應該在data參數結束時自動解析爲一個數組,然後您可以使用數組.join() method將其變爲一個字符串:

$.get("injectgroup.php", { 
    name: str 
}, function (data) { 
    $('#aspecforgroup').val(data.join(",")); 
}, "json"); 

參數.join()是加入單個元素的字符串。如果您將其忽略掉,默認情況下它將爲逗號,但您可能希望使用逗號加上空格:.join(", ")

+0

謝謝,完美,又學到了一些東西:) – Flatline 2012-07-08 12:31:32

+0

不客氣。對不起,我忘了在我的答案的'.replace()'部分解釋正則表達式。如果您對正則表達式不熟悉,我建議您從[這裏](https://developer.mozilla.org/en/JavaScript/Guide/Regular_Expressions)開始,或者您可以通過Google找到任意數量的正則表達式教程。請注意,如果您的JS將要將Ajax響應作爲純字符串處理,那麼您最好還是更新PHP以使其以您要使用的格式返回。 – nnnnnn 2012-07-08 12:35:59

1

你可以與數組做到這一點join

如果你的數據是字符串,你必須先分析字符串轉換成數組,然後做一個加入這樣的 -

var newData = JSON.parse(data).join(); 
+0

因爲它是序列化的,所以我應該在獲取請求之前設置格式json,我不知道該怎麼做,或者設置內容類型頭在PHP中,但我從來沒有做過,那麼它會自動離開我想要替換的字符。我想這會更專業,不是嗎?但是如何? :D – Flatline 2012-07-08 12:15:16

+0

而且,因爲我是一個JS的完整noob,這仍然沒有幫助,因爲var data = data.join();是不好的:) – Flatline 2012-07-08 12:18:23

+0

@Flatline - 使用其他一些變量名來保存你的連接,var newData = data.join();如果你的數據是像你在問題中提到的字符串數組,這肯定會起作用。 – 2012-07-08 12:20:23

0

如果data是一個字符串:

data = '["45054","55905","42306"]'; 
var output​ = JSON.parse(data).join(', '); 
​alert(output)​; 

如果data已經是一個數組:

data = ["45054","55905","42306"]; 
var output = data.join(', '); 
alert(output); 

兩個輸出這樣的:

45054, 55905, 42306