在我的Ajax响应中有两个变量: js , html 。
js 变量内容标记脚本中的Javascript ://部分代码 和 html 内容HTML模板。 我如何从成功的响应Ajax执行html代码的js代码?
我尝试了这个解决方案:
$('head').append(response.js); // not works
完整的Ajax请求:
getFormShare: function(type){
var posting = $.post('/share/getFormShare', { type : type } );
posting.done(function( response ) {
response = $.parseJSON(response);
$("head").append(response.js);
$('.ShareBlock #block').html(response.html).show();
initFileUpload(config);
initEditor();
});
}
PHP方面:
$js = $this->listdata->WrapperJavaScript($specialization, array('name_field' => 'type[]', 'tab' =>'tab', 'div_element' => '.specMain', 'label' => 'Category', 'autosearch' => 'true'));
$html = $this->load->view('social/forms/video', $this->data, true);
echo json_encode(array('html' => $html, 'js' => $js)); die();
答案 0 :(得分:5)
您可以使用.getScript()
并在加载后运行代码:
$.getScript("my_lovely_script.js", function(){
alert("Script loaded and executed.");
// here you can use anything you defined in the loaded script
});
您可以在此处看到更好的解释:How do I include a JavaScript file in another JavaScript file?
编辑: 由于您正在返回实际的javascript并希望执行它,因此您可以在ajax响应中执行此操作:
$.get(url,function(data){ $("body").append(data); });
编辑:
在Mike的回答的帮助下,如果您的回复中没有脚本标记,则可以使用eval()
来运行脚本。他的回答提供了更多信息。
答案 1 :(得分:1)
您可以使用javascript的eval将字符串作为代码运行。
请记住,你的字符串需要是纯JS,没有html或其他元素。
例如
eval("function foo() {console.log('bar');}");
//this call will create/instantiate a function called foo