【问题标题】:execute javascript which is returned via ajax request in RoR执行通过 RoR 中的 ajax 请求返回的 javascript
【发布时间】:2014-03-06 10:07:28
【问题描述】:

我有这样的 rails 渲染 javascript 视图:

$("##{@organization.id}-organization-introtext").hide();
$("##{@organization.id}-organization-full").append("#{escape_javascript(render @organization)}").hide().fadeIn('slow').focus();

并通过它,例如我得到这样的数据:

$("#9-organization-introtext").hide();
$("#9-organization-full").append("<h2 id=\'magenta\'>\n  Shell - Автосервис\n<\/h2>\n<div>\n  Shell - Автосервис\n  <br>\n  <br>\n<\/div>\n<div>\n  <strong>\n    Контактная информация:\n  <\/strong>\n  <p>\n    8 (0152) 510 884\n    8 (029) 265 38 09\n  <\/p>\n  <p>\n    <script type=\"text/javascript\" charset=\"utf-8\" src=\"//api-maps.yandex.ru/services/constructor/1.0/js/?sid=SrxOH8zh15XLRmFVDc91yCeDQr23_VUl&width=600&height=450\"><\/script>\n  <\/p>\n  <p>\n    г.Ростов-на-Дону, ул.Василевского 1\n  <\/p>\n<\/div>\n<div class=\'tags\'>\n  <span>\n    Метки:\n  <\/span>\n  автозапчасти, замена масла\n<\/div>\n").hide().fadeIn('slow').focus();

但是在浏览器中这个脚本没有被执行,为什么?如何运行它?并显示这个 yandex.map ?

【问题讨论】:

    标签: javascript jquery ruby-on-rails ajax


    【解决方案1】:

    @organization 拆分 Javascript 代码和 HTML 代码,并将 Javascript 代码添加到文档的 head 部分。

    var script = document.createElement( 'script' );
    script.type = 'text/javascript';
    script.text = "#{{escape_javascript(render @organization_javascript)}";
    $("head").append( script );
    

    来源 - Can't append <script> element

    【讨论】:

    • 只在点击链接时执行,页面没有重新加载
    • 我必须将此附加到某个块:$("##{@organization.id}-organization-full")。但是您的代码将其全部附加到 head
    • 注意! ajax 返回的代码包含 javascript 和 html 代码
    • 那你怎么看?
    • 从返回的输出中提取脚本代码并添加到头部
    猜你喜欢
    • 2011-11-08
    • 1970-01-01
    • 1970-01-01
    • 2017-08-17
    • 2020-07-19
    • 2011-06-10
    • 2012-02-01
    • 2016-07-02
    • 1970-01-01
    相关资源
    最近更新 更多