2013-07-08 93 views
0

我是JavaScript新手。我正在編寫一個Java代碼,它在內部編寫代碼以調用預定義的Javascript方法。將JSON作爲參數傳遞給Javascript方法

我已經定義了一個JavaScript方法:

function myfunction(url, params) { 
     $.post(url, params); 
    } 

此發送PARAMS這是一個JSON的URL作爲後(我想)。

我的Java代碼生成HTML在其內部產生像飛:

<iframe onLoad="myfunction(myinternal, {"system":"abcdef", "token": "12345"})"> ...... 

然而,這無法運行。頁檢查給了我:

SyntaxError: invalid property id 
     myfunction(myinternal, { 
          ^

我在這裏做錯了什麼?

非常感謝

+4

你與你的第二個'「'自動換行的屬性在'''或使用JavaScript來捕獲onload事件 – kalley

+0

還要注意的結束屬性。那麼你所說的「一個JSON」實際上是一個Javascript對象字面量。 – lonesomeday

回答

7

您的HTML有語法錯誤。應該更多這樣的:

<iframe onLoad="myfunction(myinternal, {\"system\":\"abcdef\", \"token\": \"12345\"})"> 

或單引號包:

編輯
<iframe onLoad='myfunction(myinternal, {"system":"abcdef", "token": "12345"})'> 

:(每首評)

<iframe onLoad="myfunction(myinternal, {&quot;system&quot;:&quot;abcdef&quot;, &quot;token&quot;: &quot;12345&quot;})"> 
+2

第一種解決方案是不正確的,html不允許像那樣轉義,你應該在這種情況下使用'"'。 –

+1

Thanks @RenéWolferink,我會編輯解決方案以消除混淆。 – jrthib

2

您需要內部escape您的報價json對象。

1

您在JSON中使用了雙引號"。它們被HTML解析器解釋爲onLoad屬性的末尾。

嘗試用單引號,像這樣:

<iframe onLoad="myfunction(myinternal, {'system':'abcdef', 'token': '12345'})"> 
相關問題