Добавить функцию AJAX для нескольких элементов - PullRequest
0 голосов
/ 23 января 2012

Я использую Codeigniter и, похоже, немного застрял с функцией.У меня есть список заголовков на главной странице:

<?php foreach($sqlquery->result() as $item): ?>

     <h1><?php echo $item->name; ?></h1>
<button onlick="loadXMLDoc()">Change</button>
<?php endforeach; ?>
<div id="myDiv">This content will change when button is pressed!</div>

Я хочу загрузить содержимое в div myDiv с http://mysite.com/index.php/home/show/9/comm. В представлении представления будут отображаться данные в зависимости от того, какой идентификатор (9)и какая категория (comm) находится в URL:

<script type="text/javascript">
function loadXMLDoc()
{
var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    }
  }

xmlhttp.open("GET","http://mysite.com/index.php/home/show/9/comm ", true);
xmlhttp.send();
}
</script>
<button onlick="loadXMLDoc()">Change</button>

Я попытался добавить функцию в foreach и изменил URL GET, но не смог заставить его работать:

xmlhttp.open("GET","http://mysite.com/index.php/home/show/<? echo $item->id; ?>/<? echo $item->cat; ?> ", true);

1 Ответ

0 голосов
/ 24 января 2012

Вы жестко закодировали идентификатор элемента в doc-функции loadXML, поэтому независимо от того, откуда вы его вызываете, он всегда будет извлекать одни и те же данные. Вам необходимо передать идентификатор предмета, связанный с кнопкой, на которую вы нажали, как минимум:

function loadXMLDoc(id) {
                    ^^--add this
   blah blah blah
   xmlhttp.open("GET","http://mysite.com/index.php/home/show/' + id + '/comm ", true);
                                                             ^^^^^^^^^^--- add this
   blah blah blah
}

и

<?php foreach($sqlquery->result() as $item): ?>
     <h1><?php echo $item->name; ?></h1>
<button onlick="loadXMLDoc(<?php echo $item->id ?>)">Change</button>
                           ^^^^^^^^^^^^^^^^^^^^^^^---add this

Помимо этого, рассмотрите возможность перехода на jquery. С помощью jquery сделать Ajax гораздо проще (всю функцию loadxmldoc можно уменьшить до SINGLE строки с помощью jquery). Кроме того, вы можете исключить необходимость встраивать идентификаторы элементов в вызов функции и использовать несколько простых поисков в dom для извлечения связанного идентификатора непосредственно из dom веб-страницы.

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