Ajax возвращает дочерний шаблон HTML - вставка в DIV завершается неудачно - PullRequest
0 голосов
/ 16 июня 2011

Следующий скрипт получает HTML из вызова AJAX - HTML отлично отображается в браузере - я использую InnerHtml, чтобы поместить его в DIV, я получаю ошибку javascript:

Uncaught TypeError: Cannot call method 'setData 'из неопределенного

Я поместил тот же самый точный HTML путем жесткого кодирования внутри шаблона, он работает нормально - он просто не работает, когда я вставляю его в DIV динамически!есть идеи?

<script> 
  $(document).ready(function() 
  { $('ul.art-vmenu li').click(function(e) 
     { 
       //Ajax call to get content:
       $.ajax(
       {
             type: "GET",
             url: "/create",
             data: "",
             success: function(msg)
             {
               //alert(msg);   
               document.getElementById("art-post-inner art-article").innerHtml = msg; 
               //$("#art-post-inner art-article").html(msg);  // jQuery call             
               window.clipboardData.setData("Text", msg);  // for debug in IE               
             }
       });

     });
  });    
</script>   

Ответы [ 3 ]

3 голосов
/ 16 июня 2011

в первую очередь: это innerHTML, а не innerHtml

секунда: какой браузер вы используете?Данные буфера обмена доступны только в IE

. Проверьте также: Как скопировать в буфер обмена в JavaScript?

2 голосов
/ 16 июня 2011

Вы пытаетесь сослаться на innerHTML на неопределенное значение, потому что document.getElementById возвращает undefined, потому что этот код запрашивает неверный идентификатор:

document.getElementById("art-post-inner art-article").innerHtml = msg; 
//            Spaces not allowed ------^     and      ^----- Should be innerHTML

(+1 к roberkules для , указывающего innerHTML вещь, я читал сразу за ней.)

Правила для идентификаторов различаются в зависимости от того, используете ли вы HTML4 и ниже,HTML5 (который гораздо более разрешительный) или CSS (ограничительный), но их объединяет одно: у вас не может быть пробела в идентификаторе:

Я предполагаю, что не является идентификатором, вы предполагаете, что он является каким-то селектором, но так как вы не показали никакой разметки, я не могу помочь суказывающий, как вы можете это исправить, кроме того, чтобы сказать, что если это селектор, вы не хотите document.getElementById, вы хотите использовать jQuery $, как в другом месте вашего кода.

1 голос
/ 16 июня 2011

Вы получаете сообщение «Uncaught TypeError: Невозможно вызвать метод 'setData' of undefined", так как window.clipboardData не определен. innerHtml также неверен.

Вы всегда должны использовать метод jquery html, чтобы установить html для любого элемента dom, потому что jquery заботится о выполнении любых тегов скрипта с разметкой, которую вы устанавливаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...