【问题标题】:Code snippet not loading properly代码片段未正确加载
【发布时间】:2016-03-05 04:24:44
【问题描述】:

在从数据库中检索到相应的数据 ID 后,我正在尝试向网页添加评论 sn-p。不幸的是,如果我添加如下所示的 sn-p,sn-p 将无法正常工作。如果 sn-p 在 html 中硬编码,则 sn-p 可以正常工作,但如果我在 javascript 中添加它,或者如果我将 sn-p 放入没有 data-id 然后尝试使用正确的 id 附加 data-id 属性,则不会。

我尝试在 div 位置旁边的脚本中将我的 ajax 调用加载到数据库中,然后简单地使用 document.write() 但没有成功。使用中的sn-p是来自Mobials的评论sn-p。

非常感谢您的帮助。

<div id="mobials"> </div>
<script type="text/javascript" src="//api.mobials.com/assets/js/api/v1.js"></script>
<script type="text/javascript" src="https://mobials.com/assets/js/api/review.min.js"></script>


function Submit() {
        if (validateInputs()) {
            $.ajax({
                type: "GET",
                url: "@ViewBag.urlApi" +"LocationDetails?zipcode=" + $("#ZipCodeLoc").val() + "&format=JSON&authoriazation={"+"@ViewBag.ApiKey"+"}",
                dataType: "jsonp",
                traditional: true,
                success: function (data) {
                    $("#events").empty();
                    $("#logos").empty();
                    $("#openingHours").empty();

                    locationDetails = JSON.parse(data);

                    //Customer Reviews
                    var isMobial = false;
                    $.each(locationDetails.Reviews, function (key, value) {
                        if(key == "Type" && value == 1){
                            isMobial = true;
                            $("#consumerAffairs").hide();
                        }
                        if(key == "ReviewCode" && isMobial){
                            var mob = document.getElementById("mobials");
                            mob.innerHTML += '<div class="mobials-root" data-id="'+value.reviewcode+'" data-language="en" data-type="badge" data-size="200"></div>';
                        }
                    });
            }};
        }
    }

编辑:我的 .html 中的这一行:

<div   class="mobials-root" data-id="someId" data-language="en" data-type="badge" data-size="200"></div>

加载后的样子:

<div class="mobials-root" data-id="someId" data-language="en" data-type="badge" data-size="200" data-tracker="1" id="mobial-root-1"><img src="https://s3.amazonaws.com/mobials.com/api/badges/read_reviews/en/174_174_4.7_70.png"></div>

【问题讨论】:

    标签: javascript jquery asynchronous code-snippets


    【解决方案1】:

    您不能将 document.write() 与 ajax 调用一起使用。

    document.write() 只会在文档打开时“按预期”工作。一旦浏览器识别出文档已完全加载,文档就会关闭。

    对document.write() 的后续调用将替换文档而不是附加到它。

    编辑:但是查看您的代码,我根本看不到 document.write()。

    【讨论】:

    • 我最初尝试使用 document.write 但它不起作用。在上面的代码中,我尝试通过 innerHTML 方法添加 sn-p,但它没有正确加载。一旦页面在 chrome 中,我可以看到我用 innerHTML 添加的确切 div,但它不会在 UI 中加载实际的 sn-p。
    • @Marc-AndréViau with innerHTML=... 原则上应该可以工作。一定是某个地方的其他错误。你能把你的代码缩小到一些最小的分配,然后再次扩展它吗?
    • 我不确定我明白你在问什么。
    • @Marc-AndréViau 好吧,每次调试都从什么开始:获取不起作用的 big 代码并跳过一些代码直到它起作用,和/或创建一个非常少的代码,至少可以在预期的地方提供一些控制台日志并构建它。在您之间的某个地方会发现错误。对不起,我不能更具体。我的第一个答案是关于 document.write(),但您已经排除了这一点,我无法轻易发现其他问题。
    • 我后来发现了问题。它与为使 sn-p 工作而加载的脚本有关。通过在我使用创建实际 sn-p 的同时创建它们,它解决了我的问题。
    猜你喜欢
    • 1970-01-01
    • 2022-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多