【问题标题】:Passing a JSON encoded PHP array to HTML onclick将 JSON 编码的 PHP 数组传递给 HTML onclick
【发布时间】:2017-09-08 06:14:57
【问题描述】:

我正在尝试填充我的 jquery 数据表,并且我已经成功地这样做了。 除非我在 html 标记中的一个 javascript 函数参数中传递 JSON 编码字符串。我正在使用 PHP 中的以下代码。如下所示,我在 onclick 部分函数的最后一个参数上传递了 $update_data 变量的 json_encode。

                       $update_data = 
                            array(
                            array('Page type',array( array('1 - Standard','Standard'), array('2 - HTML','HTML') ),'select','noval'),
                            array('title',$row->title,'input','val'),
                            array('header',$row->header,'input','noval'),
                            array('footer',$row->footer,'input','noval'),
                            );

$subarray[]='<center> <span data-target="#updatepost'.$row->_id.'" data-toggle="modal" onclick="easy_update(\'update\',\'post\',\'book/update-book-folder-designation\','.$row->_id.',\'Update Pages\',\''.json_encode($update_data).'\')" class="btn fa fa-pencil"></span> </center>';

然后我得到一个错误

未捕获的 SyntaxError:无效或意外令牌

当我从 onclick 调用函数时。但是 javascript 错误行没有指向任何内容。

我的javascript函数很简单

function easy_update(type,method,url,id,header_title,data){

 }

我怀疑是 json 字符串的格式导致读取我的 js 函数的参数时出现混乱,但我不确定。 这是我在检查元素中渲染的 html 标记的图像

当我用常规字符串作为参数替换 json 编码字符串时,我没有收到任何错误。我希望我能就这个问题提供足够的信息。

【问题讨论】:

    标签: javascript php html json


    【解决方案1】:

    我想您正在尝试在客户端函数easy_update() 上使用字符串参数作为 JS 对象。尝试发送不带引号的data

    $subarray[]='<center> <span data-target="#updatepost'.$row->_id.'" data-toggle="modal" onclick="easy_update(\'update\',\'post\',\'book/update-book-folder-designation\','.$row->_id.',\'Update Pages\','.json_encode($update_data).')" class="btn fa fa-pencil"></span> </center>';
    

    您还需要替换标签或 json_encode() 结果中的引号,例如:

    $var = str_replace('"', '\'', json_encode($update_data));
    

    然后将其发送到函数,可能的选项之一是:

    $encoded = str_replace('"', '\'', json_encode($update_data));
    $subarray[]='<center> <span data-target="#updatepost'.$row->_id.'" data-toggle="modal" onclick="easy_update(\'update\',\'post\',\'book/update-book-folder-designation\','.$row->_id.',\'Update Pages\','.$encoded.')" class="btn fa fa-pencil"></span> </center>';
    

    【讨论】:

    • 嗨,我试过了,但我仍然遇到同样的错误:Uncaught SyntaxError: Invalid or unexpected token.
    • @ReubenJaMesAveñoGruta 我修正了我的答案,现在试试吧
    • 现在它有一个不同的错误:JSON 中的意外令牌 P。 imgur.com/a/N1aFp
    • @ReubenJaMesAveñoGruta 嗯.. 所以你可以尝试在客户端的另一个地方从 js easy_update() 函数中定义 data 变量。并将 PHP 中的值放入 data 而不替换引号。这会更方便,因为您不会在 onclick 属性中使用大型 JS 对象,并且引号不会有任何问题。
    猜你喜欢
    • 1970-01-01
    • 2016-08-15
    • 1970-01-01
    • 2015-05-17
    • 1970-01-01
    • 2018-02-02
    • 2018-01-18
    • 1970-01-01
    • 2015-01-12
    相关资源
    最近更新 更多