2016-02-10 4 views
0

Я пытаюсь добавить фрагмент обзора на веб-страницу после получения соответствующего идентификатора данных из базы данных. К сожалению, фрагмент не работает должным образом, если я добавлю фрагмент, как показано ниже. Фрагмент прекрасно работает, если он жестко закодирован в html, но не если я добавлю его в javascript, или если я поместил фрагмент без идентификатора данных, а затем попытаюсь добавить атрибут id-файла с правильным идентификатором.Фрагмент кода не загружается должным образом

Я пробовал загрузить мой вызов ajax в базу данных в скрипте рядом с местоположением div, а затем просто использовать document.write(), но безуспешно. Используемый фрагмент представляет собой обзорный фрагмент от Mobials.

справка приветствуется.

<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>'; 
         } 
        }); 
      }}; 
     } 
    } 

EDIT: Эта строка в моей .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> 

ответ

0

Вы не можете использовать document.write() с Ajax вызовов.

document.write() будет работать «как ожидалось» только до тех пор, пока документ открыт. Как только браузер узнает, что документ полностью загружен, документ закрыт.

Последующие звонки в document.write() будут заменить документ, а не прилагать к нему.

Редактировать: но, глядя на ваш код, я не вижу document.write().

+0

Первоначально я попытался использовать document.write, но это не сработало. В приведенном выше коде я пытаюсь добавить фрагмент через метод innerHTML, но он не загружается должным образом. Я могу видеть точный div, который я добавляю с innerHTML, когда страница находится в хроме, но не загружает фактический фрагмент в пользовательском интерфейсе. –

+0

@ Marc-AndréViau с innerHTML = ... он должен работать, в принципе. Должна быть какая-то другая ошибка где-то. Можете ли вы уменьшить свой код до минимального задания, а затем снова расширить его? –

+0

Я не уверен, что понимаю, о чем вы спрашиваете. –