2014-12-11 2 views
0

Я хотел бы задать ваше мнение. Я создаю веб-страницу ajax. Мои ссылки делают GET URL-адреса, на который они ссылаются, выбирают div.content и изменяют содержимое фактического div.content.Сайт Ajax. Страница правильно загружена в зависимости от предыдущей страницы

Это действие GET извлекает HTML-код с некоторым кодом в нем. Он выглядит корректно, но только тогда, когда я не перехожу от конкретной ссылки. Я не вижу никакого смысла.

Я не знаю, какой код может быть полезен для публикации здесь, чтобы увидеть эффект, я apolozise, ​​если я вставляю много или слишком меньше кода.

У меня есть эти две функции для управления загрузкой новых ресурсов сценариев в основной раскладке:

loadScript: function (scriptUrl, callback) { 
    if (jsArray[scriptUrl]) { 
     console.log("loadScript already loaded " + scriptUrl); 
     callback && callback(); 
    } else { 
     jsArray[scriptUrl] = true; 
     console.log("loadScript " + scriptUrl); 
     var body = document.getElementsByTagName("body")[0]; 
     var script = document.createElement('script'); 
     script.type = "text/javascript"; 
     script.src = scriptUrl; 
     script.onload = callback; 

     body.appendChild(script); //or something of the likes 
    } 
}, 
loadScripts: function (scriptsUrl, callback) { 
    console.log("loadScripts"); 
    if (scriptsUrl.length === 1) { 
     this.loadScript(scriptsUrl[0], callback); 
    } else { 
     var scriptUrl = scriptsUrl[0]; 
     scriptsUrl.shift(); 
     this.loadScript(scriptUrl, function() { 
      Main.loadScripts(scriptsUrl, callback) 
     }); 
    } 
} 
}; 

Все моя связь с классом асинхронном будут переплетены в этой функции:

var loadAsyncUrl = function (url) { 
    if (main.currentPage === url) {} 
    main.currentPage = url; 
    $("div.container .page-content").hide(); 
    $("div.container .loading-link").show(); 
    $.get(url, function (data) { 
     $("div.container #page-header").html($(data).find("div.container #page-header").html()); 
     $("div.container .breadcrumb").html($(data).find("div.container .breadcrumb").html()); 
     $("div.container .content").html($(data).find("div.container .content").html()); 
     $("div.container .loading-link").hide(); 
     $("div.container .page-content").show(); 
    }, 'html') 
     .fail(function (e) { 
     alert("ERROR 404"); 
     console.log(e); 
    }); 
}; 

If I перейдите со страницы A на любую страницу (даже сама страница A), вызовы loadScripts, которые есть в нижней части div.content, не вызываются. С другой стороны, если я перейду со страницы B на любую страницу, даже снова A, код будет выполнен правильно.

На странице A, на самом деле, HTML-код немного тяжелее, чем другие страницы, со всеми правилами CSS и т. Д., Которые потребляют, вероятно, больше времени для рендеринга. Может быть, это и есть причина? Как вы объясните, загрузите ли я снова страницу A, идущую со страницы A, она загружается должным образом?

Как вы справитесь? Я хотел бы, чтобы ссылки указывали на полную веб-страницу, а не только на частичный html, который я хочу загрузить. Я хочу это, потому что, если пользователь решает открыть на новой вкладке, у них есть весь раздел.

+0

Вы получили какую-либо ошибку с консоли? – faby

+0

Я этого не сделал. Проблема решена. Как выполняется JS, даже если он не делает то, что я ожидал, но это еще один момент ... Спасибо – splig

+0

надеюсь, что мой ответ приведет вас к правильному пути – faby

ответ

0

Dammed! Три дня его искали, и это было передо мной.

у меня было больше, чем div.content внутри div.container в моей странице А.

Измененный для уникального идентификатора и работы.

извините

0

Как я могу видеть из кода, я подозреваю, что может быть в вашей странице А некоторые из этих селекторов отсутствует

  1. $("div.container #page-header")
  2. $("div.container .breadcrumb")
  3. $("div.container .content")

попробуйте проверить length имущества ваших объектов

if ($("selector").length > 0){ 
    //replace html 
} 
+0

Спасибо, что ответил, но не успел ... Я пробовал и ничего. Во всяком случае, все элементы имеют контент. – splig

+0

Вы получили какую-либо ошибку с консоли? Если да, можете ли вы опубликовать его? – faby

Смежные вопросы