执行从.post返回的JavaScript
我希望JavaScript执行post返回的数据。我发现了好几条类似的线索,但没有什么能帮我澄清。eval抛出意外的标识符错误 该职位:执行从.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
$.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);
}
);