Ответ Ajax, который устанавливает переменную javascript, закрывает любые элементы HTML - PullRequest
1 голос
/ 19 февраля 2012

есть ли вообще это сделать? Мой ajax устанавливает переменную javascript, но когда я пытаюсь отобразить ее, используя document.write, она охватывает элементы html. Можно ли это сделать так, чтобы я мог использовать переменные javascript, а не скрывать элементы html? Заранее спасибо.

<html>
<head>
<title>Log In</title>

<!-- script tag for ajax jquery -->
<link href='style.css' type="text/css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.js" type="text/javascript"></script>

<script type="text/javascript">


$(document).ready(function()

              {
              //Get Data ajax function 
              $.post(
                     'getData.php',
                     {

                     },                                           
                     function(response)
                     {
                     $('#name').html($('#1' , response).html());
                     $('#sname').html($('#2' , response).html()); 

                     var x = $('#1' , response).html();
                     document.write(x);

                     })

              return false;
              })

</script>

</head>

<body>

<div id="name"></div>
<div id="sname"></div>

this is text that get covered up, as well as any other html elements 


</body>

</html>

Ответы [ 2 ]

2 голосов
/ 19 февраля 2012

Так как вы используете jQuery, вам не следует использовать document.write по причинам, которые другие люди подчеркнули.Используйте это вместо:

$(document).ready(function()

          {
          //Get Data ajax function 
          $.post(
                 'getData.php',
                 {

                 },                                           
                 function(response)
                 {
                 $('#name').html($('#1' , response).html());
                 $('#sname').html($('#2' , response).html()); 

                 var x = $('#1' , response).html();
                 // Use .append() instead of document.write()
                 $('body').append(x);
                 })

          return false;
          })

Таким образом, вы не потеряете существующие данные.

2 голосов
/ 19 февраля 2012

document.write в основном используется во время загрузки страницы. Отвечая на события, вы модифицируете DOM с помощью таких функций, как createElement, appendChild и т. П .; или свойства типа innerHTML.

Например, если вы хотите добавить содержимое вашей x в виде разметки в div вместо

document.write(x);

вы бы сделали это:

var div = document.createElement('div');
div.innerHTML = x;
document.body.appendChild(div);

Если вы хотите найти элемент уже в DOM и изменить его, вы можете сделать это с помощью document.getElementById, если у него есть идентификатор, или document.getElementsByTagName, чтобы получить список элементов с данный тег (оба являются частью DOM2 ) или (в большинстве, но не во всех текущих браузерах) querySelector и querySelectorAll из API селекторов .

Больше чтения:

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