Jump to content
  • 0

Передача объекта js через параметр функции


htmligor
 Share

Question

Всем привет, передаю объект js такого вида 

{'ACCESSORIES':{'ID':'20','VALUE':'Бита диаметр 10мм'}}

через параметр функции 

<input type="button" value="Купить сейчас" onClick="AddToCart('<?=$arItem["ADD_URL"]?>','<?=CUtil::PhpToJSObject($arItem["PRODUCT_PROPERTIES_FILL"])?>')">

в итоге ошибка в хроме Uncaught SyntaxError: Unexpected identifier . Функция которая во втором параметре и формирует такой объект.

 
Link to comment
Share on other sites

15 answers to this question

Recommended Posts

  • 0

Тут какие-то PHP переменные. Давайте вы, может, покажете что получается в итоге когда переменные выведутся? Или ошибка на стороне сервера? Тогда причём тут javascript?

Link to comment
Share on other sites

  • 0

Вот такой объект js выдаёт вызов функции <?=CUtil::PhpToJSObject($arItem["PRODUCT_PROPERTIES_FILL])?>   

{'ACCESSORIES':{'ID':'20','VALUE':'Бита диаметр 10мм'}}

В переменной $arItem["PRODUCT_PROPERTIES_FILL] находится такой же массив только на php.

На сервере никаких ошибок нету, выдаёт только js ошибки (Uncaught SyntaxError: Unexpected identifier) я так понимаю что это связано с апострафами в которые заключен параметр '<?=CUtil::PhpToJSObject($arItem["PRODUCT_PROPERTIES_FILL])?>'  функции AddToCart, но как от этого избавиться.

Link to comment
Share on other sites

  • 0

 блин, вы же на PHP отдаете? ну и смотрите, что у вас здесь выводится

А уже на базе этого все вам понятно будет. что там. Что нужно и как экранировать

Если вы туда объекты отдаете - то конечно, ковычки убирайте. С ними это не объекты а стринги

 onClick="AddToCart('<?=$arItem["ADD_URL"]?>','<?=CUtil::PhpToJSObject($arItem["PRODUCT_PROPERTIES_FILL"])?>')"
Edited by Николя223
Link to comment
Share on other sites

  • 0

ах да, еще попробуйте заменить <? на <?php

str_replace("'","\'",$str) в вашем случае экранировать нужно двойные кавычки а не одинарные

что-то вроде этого будет str_replace("\"","\\"",$str)

Edited by Switch74
Link to comment
Share on other sites

  • 0

http://cl287985-bitrix.tw1.ru/catalog/elektroinstrumenty/dalnometry/

Первый товар в списке , через firebug нажмете проинспектировать кнопку Купить сейчас http://fscreen.ru/UBci8922514140733, там увидите второй параметр функции, экранирование я убрал, ошибка происходит при нажатии на кнопку Купить сейчас,все это тестировал в хроме

Link to comment
Share on other sites

  • 0

addslashes должна помочь, не верю, что она не помогает. На странице результат скрипта с ней или без неё?

Можно еще попробовать заменить вот это:

CUtil::PhpToJSObject($arItem["PRODUCT_PROPERTIES_FILL"])
на это:

json_encode($arItem["PRODUCT_PROPERTIES_FILL"])
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy