2014-02-06 36 views
3

我試圖從php傳遞數據到java腳本以進行「onclick」事件。 我通過將數組數據轉換爲JSON字符串將其解析回js函數中並對其進行處理。傳遞PHP字符串的JSON(與qoutes)到onclick函數

問題是JSON字符串包含雙引號,因此雙引號會破壞html字符串(未捕獲的SyntaxError:意外的標記爲ILLEGAL)時出現錯誤。我確實看到類似這樣的幾個問題,但沒有找到我需要的解決方案,或者我沒有理解正確的解決方案。所以我把它帶到我的具體案例。

<?php 
    ..some php code here.. 
    $aData = array("You","Me",76,array(3,6)); 
    $sJSONstr = json_encode($aData); 
?> 

<input type="button" name="formSubmit" value="Delete" onclick="analyze('<?php echo $sJSONstr; ?>')"> 

<?php 
    ..some php code here.. 
?> 

和JS的功能如下:

function analyze(i_sInputDataJSONStr) 
{ 
var aInputData = JSON.parse(i_sInputDataJSONStr); 

    .. So something with the input data array.. 
} 

回答

3

使用單引號的onclick屬性,而不是雙引號。單引號與雙引號同等有效。因爲你的JSON數據是一個有效的JavaScript數組(這就是JSON所代表的意思:這是一個有效的數組, JavaScript對象表示法)。 因此,您不必在analyze函數聲明中解析輸入字符串。

考慮下面的例子,這是完全有效的代碼。

<?php 
    $arr = ["Hello", "World"]; 
    $json = json_encode($arr); // $json = '["Hello","World"]' 
?> 
<div id="myDiv" onclick='doSomething(<?php echo $json; ?>)'>Click me</div> 

<script type="text/javascript"> 
function doSomething(data){ 
    for (var i = 0; i < data.length; i++) { 
     alert(data[i]); 
    } 
} 
</script> 
+0

你怎麼這麼說? 'onclick =「analyze('<?php echo $ sJSONstr;?>')」'他已經在'onclick()'' –

+0

'內提供單引號謝謝,但我還需要單引號圍繞<?php echo $ sJSONstr ; ?>以便它將是一個字符串而不是一個對象。那麼我該怎麼做呢? – user3198805

+0

@康南請看我更新的答案。由於他的數據是JSON,因此不需要將其作爲字符串(並再次解析)。 –

0

創建一個JavaScript字符串,並把它傳遞:

<script type="text/javascript"> 
var myjson = '<?php echo $sJSONstr; ?>'; 
</script> 

然後:

onclick="analyze(myjson)" 
+0

對不起,downvote,我沒有看到你的答案夠接近。 –

-1
<input type="button" name="formSubmit" value="Delete" onclick='analyze(<?php echo $sJSONstr?>)'> 

替換在的onclick = '' 單引號雙引號; 工作就像一個魅力對我來說。

+0

這個答案已經給出並接受 – Bowdzone

相關問題