2013-07-08 7 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"})'> 

EDIT: (за первый комментарий)

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

Первое решение неверно, html не позволяет экранировать подобное. Вы должны использовать '"' в этом случае. –

+1

Спасибо @ RenéWolferink, я буду отредактируйте решение, чтобы устранить путаницу. – jrthib

2

Вы должны escape ваши котировки внутри объект json.

1

Вы использовали двойные кавычки " в своем JSON. Они интерпретируются парсером HTML как конец атрибута onLoad.

Попробуйте одинарные кавычки, например:

<iframe onLoad="myfunction(myinternal, {'system':'abcdef', 'token': '12345'})"> 
Смежные вопросы