我希望JavaScript执行从帖子返回的数据。我找到了几个类似的线程,但没有任何东西可以为我清除它。 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.log(data)
按预期记录echo
但是,在Chrome的控制台中,当我执行saveCSS()
时,我看到了:
function( data )
{
// $( "#responseText" ).val( data );
// console.log(data);
eval(data);
**Uncaught SyntaxError: Unexpected Identifier**
}
);
我害怕我不明白为什么我会收到错误。
答案 0 :(得分:0)
为了执行返回的数据,你必须评估它,例如
$.post("./save.php",
{
'images_key' : images_array,
'userid_key' : $('#userid').val(),
'avatar_key' : $('#avatar_name').val()
},
function( data )
{
$( "#responseText" ).val( data );
eval(data);
}
);
除非您完全信任从服务器接收的代码,否则我建议不要执行数据,因为它可能会导致您网站中出现XSS vulnerability。