2013-04-19 2 views
0

Сценарий: элементы портфеля на холсте, перечисленные с разбивкой по страницам ajax.Перезагрузка холста javascript после вызова ajax

Проблема: после загрузки следующей страницы содержимого с помощью ajax теги скриптов не находятся внутри тегов холста.

Пробовал: добавление тегов скриптов перед тегами холста, это тоже не загружается (так что определенно проблема с загрузкой скриптов).

Исследование: jquery script not working, видимо, вы не можете извлекать скрипты из-за безопасности.

Возможная альтернатива: добавление содержимого холста извне тегов холста, но тогда трудность связана с прохождением динамически созданных тегов названия папок!

Код:

<ul id="products-list"> 
     <?php 
      $i = 0; 
      while($the_list->have_posts()): $the_list->the_post(); //wordpress loops through posts 
     ?> 

     <li class="product-item<?php echo $i;?>"> 
      <script>functionForMakingACanvasOverlayUsingThePostTitle("<?php echo get_the_title() ?>");</script> 
      <canvas></canvas> 
     </li> 

     <?php $i++; ?> 

    <?php endwhile; ?> 
    </ul> 

6 элементов показаны на странице и следующая кнопка использует Ajax для вызова следующие 6 пунктов

Предложения? Благодарю.

+0

Почему вы положили теги сценария внутри холст теги в первое место? В любом случае, практически невозможно ничего сказать, не видя кода. – JJJ

+0

Код добавлен, спасибо. Кроме того, не правильно ли положить скрипты в теги canvas? Я имею в виду, что w3 имеет в своих учебниках: http://www.w3schools.com/html/tryit.asp?filename=tryhtml5_canvas_tut_text2 – timhc22

+1

[w3schools - не самый надежный источник] (http://w3fools.com), но в этом случае если вы внимательно посмотрите на код на этой странице, вы увидите, что тег скрипта фактически находится за пределами тега canvas. – JJJ

ответ

1

myYou не может добавить код javascript, используя AJAX, не вызывая самый ненавидящий метод eval. И в вашем случае вам не нужно. Ваш ответ заключается в вызове внешнего javascript на объект, а не при вызове javascript напрямую. Код, который вы дали нам очень редко, так что моя идея ниже исключительно для демонстрационных целей - вам нужно перевести его для реальной ситуации:

<canvas><div id="mytitle"></div></canvas> 
<script> 
    function drawTitleOverlay(title){ 
     var titleoverlayhtml = buildTitleOverlayHTMLFromTitle(title); 
     document.getElementById('mytitle').innerHTML = titleoverlayhtml; 
    } 

    function nextPage(){ 
     var data = getAJAXData(); 
     var title = getTitleFromData(data); 
     drawTitleOverlay(title); 
    } 
</script> 
+0

звучит неплохо, единственная проблема заключается в том, что будет несколько холстов, так что будет mytitle1 mytitle2 .. и т. Д., Есть ли цикл, который можно поместить вокруг document.getElementById, который получит mytitle1 mytitle2 для неизвестного номера предметов? – timhc22

+0

Существует множество способов получить ссылку на каждый из объектов div на вашем холсте, но, не видя своего фактического кода, я не могу рекомендовать лучший. Однако мне кажется, что данные AJAX будут включать данные для каждого тега DIV, и эти данные также будут содержать идентификатор для тега - так что у вас уже есть идентификаторы всех тегов. Просто переверните их. –

+0

код добавлен в главный вопрос! – timhc22

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