今天在拼接字符串時加入了onclick事件出發的函數需要傳遞參數對象,結果遇到了一系列問題,特此記錄
我是想用ajax接收後臺傳遞的json數據,在成功的回調函數裏拼接字符串,然後替換文本。
第一次我是這樣拼接的
success : function(data){
console.log(data);
str = '';
for(var i=0; i<data.length; i++){
str += '<li onclick = "informationPoint('+ data[i] +')">' + data[i].chgstationName + '</li>';
}
$("#informationPoint").html(str);
}
結果瀏覽器報錯如下:
出現這種情況我覺得是因爲瀏覽器並不能成功解析我傳入的json對象,故我又將json對象轉換爲了json字符串進行拼接
success : function(data){
console.log(data);
str = '';
for(var i=0; i<data.length; i++){
var info = JSON.stringify(data[i]);
str += '<li onclick = "informationPoint('+info+')">' + data[i].chgstationName + '</li>';
}
$("#informationPoint").html(str);
}
結果瀏覽器又報如下錯誤:
但是onclick中的方法的參數取到了
所以這次出錯是因爲我拼接字符串用到的雙引號和json字符串中的雙引號衝突了,修改後代碼如下
success : function(data){
console.log(data);
str = '';
for(var i=0; i<data.length; i++){
var info = JSON.stringify(data[i]);
str += '<li onclick = "informationPoint('+info.replace(/"/g, '"')+')">' + data[i].chgstationName + '</li>';
}
$("#informationPoint").html(str);
}
將json字符串中的雙引號用轉義字符來代替,問題就解決了