执行从.post返回的JavaScript

执行从.post返回的JavaScript,javascript,php,jquery,post,Javascript,Php,Jquery,Post,我希望JavaScript执行post返回的数据。我发现了好几条类似的线索,但没有什么能帮我澄清。eval抛出意外的标识符错误 该职位: $.post("./save.php", { 'images_key' : images_array, 'userid_key' : $('#userid').val(), 'avatar_key' : $('#avatar_name').val() }, function( data ) { $( "#re

我希望JavaScript执行post返回的数据。我发现了好几条类似的线索,但没有什么能帮我澄清。eval抛出意外的标识符错误

该职位:

$.post("./save.php", 
  {
    'images_key' : images_array,
    'userid_key' : $('#userid').val(),
    'avatar_key' : $('#avatar_name').val()
  },
  function( data ) 
  {
    $( "#responseText" ).val( data );
    eval(data);
  }
);
该职位正在返回:

$('.frame').html2canvas({
  onrendered: function (canvas) {
    //Set hidden field's value to image data (base-64 string)
    $('#img_val').val(canvas.toDataURL('image/png'));
    //Submit the form manually
    document.getElementById('myForm').submit();
  }
});
有什么想法吗

谢谢

更多信息:

单击按钮时,我调用此函数:

function saveCSS() {

    var id_data = $(".frame div img").map(function() {
      return $(this).attr("id");
    }).get();

    var title_data = $(".frame div img").map(function() {
      return $(this).attr("title");
    }).get();

    var width_data = $(".frame div img").map(function() {
      return $(this).css("width");
    }).get();

    var height_data = $(".frame div img").map(function() {
      return $(this).css("height");
    }).get();

    var top_data = $(".frame div:has(img)").map(function() {
      return $(this).css("top");
    }).get();

    var left_data = $(".frame div:has(img)").map(function() {
      return $(this).css("left");
    }).get();

    var zindex_data = $(".frame div:has(img)").map(function() {
      return $(this).css("z-index");
    }).get();


    var images_array = [];
       $.each(id_data, function (index, value) {
        images_array.push(value);
        images_array.push(title_data[index]);
        images_array.push(width_data[index]);
        images_array.push(height_data[index]);
        images_array.push(top_data[index]);
        images_array.push(left_data[index]);
        images_array.push(zindex_data[index]);
    });

    $.post("./save.php", 
      {
        'images_key' : images_array,
        'userid_key' : $('#userid').val(),
        'avatar_key' : $('#avatar_name').val()
      },
      function( data ) 
      {
        // $( "#responseText" ).val( data );
        // console.log(data);
        eval(data);
      }
    );
}
save.php文件包含:

.
.
.
echo "
$('.frame').html2canvas({
    onrendered: function (canvas) {
        $('#img_val').val(canvas.toDataURL('image/png'));
        document.getElementById('myForm').submit();
    }
});
";
.
.
.
console.logdata按照预期记录回声。但是,在Chrome的控制台中,当我执行saveCSS时,我看到:


恐怕我不明白为什么会出现错误。

为了执行返回的dat,您必须对其进行评估,例如

$.post("./save.php", 
  {
    'images_key' : images_array,
    'userid_key' : $('#userid').val(),
    'avatar_key' : $('#avatar_name').val()
  },
  function( data ) 
  {
    $( "#responseText" ).val( data );
    eval(data);
  }
);

也就是说,除非您完全信任从服务器接收到的代码,否则我不建议执行数据,因为这可能会导致站点中出现错误。

我收到一个意外的标识符错误…:-/听起来好像您正在执行的代码中有语法错误。试试console.logdata;因此,请查看在编写代码和服务器之间是否对代码进行了任何修改。嗯……它会准确记录应该返回的内容。$'。frame'.html2canvas{onrendered:function canvas{//将隐藏字段的值设置为图像数据库-64字符串$'img_val'.valcanvas.toDataURL'image/png';//手动提交表单文档。getElementById'myForm'.Submit;};您的评论产生了语法错误。将注释更改为/*将隐藏字段的值设置为image database-64 string*/这样应该可以工作。问题是您的服务器正在删除结束行,因此单行注释将破坏您的脚本。我删除了注释,现在它正在记录以下内容:$'.frame'.html2canvas{onrendered:function canvas{$'img_val'.valcanvas.toDataURL'image/png';document.getElementById'myForm'.submit;};然而,evaldata仍然抛出该错误。
$.post("./save.php", 
  {
    'images_key' : images_array,
    'userid_key' : $('#userid').val(),
    'avatar_key' : $('#avatar_name').val()
  },
  function( data ) 
  {
    $( "#responseText" ).val( data );
    eval(data);
  }
);