我试图填充我的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函数参数的混乱,但我不确定。 以下是来自inspect元素
的渲染html标记的图像当我用常规字符串替换json编码的字符串作为参数时,我没有得到任何错误。我希望我能提供足够的信息。
答案 0 :(得分:0)
我想你试图在客户端函数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>';