使用嵌套引号和撇号注入代码?

时间:2014-02-21 12:24:45

标签: javascript php jqgrid jqgrid-php

我在PHP文件中有这段代码。

var my_edit = "<div title='Edit record: "+ rowObject['my_id'] +"' 
 onclick=\"jQuery('#grid').jqGrid('editGridRow', '" + options.rowId + "',
 { onInitializeForm : $upload } );\" >Edit</div>";

变量 $ upload 是这样的:

$upload = <<<UPLOAD

   function (formid) {

      alert('I am in UPLOAD!');
      $("#cusom_id", formid).button();
      // other code with many quotes and apostrophes

   }

UPLOAD;

我的代码无效,因为引号和撇号都有错误。

$ upload 函数注入我上面发布的第一段代码中的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

您需要转义引号,并且应该能够使用addslashes()

$upload = <<<UPLOAD
function (formid) {
  alert('I am in UPLOAD!');
  $("#cusom_id", formid).button();
  // other code with many quotes and apostrophes
}
UPLOAD;
$upload = addslashes($upload);
// now you can embed it in the string my_edit.

答案 1 :(得分:0)

嗯,说实话!这不能正常工作,这不是一个好习惯。

我想知道你为什么使用PHP变量来调用$ upload中的javascript函数,你可以通过javascript函数直接访问它!

例如......

function myUpload (formid) {

  alert('I am in UPLOAD!');
  $("#cusom_id", formid).button();
  // other code with many quotes and apostrophes

}

 var my_edit = "<div title='Edit record: "+ rowObject['my_id'] +"'onclick=\"jQuery('#grid').jqGrid('editGridRow','" + options.rowId + "', {onInitializeForm : myUpload(formid) } );\" >Edit</div>";