2012-01-23 2 views
0

Codeigniter를 사용 중이며 기능이 조금 붙어있는 것처럼 보입니다. 나는 홈 페이지에 제목의 목록을 가지고 :여러 요소에 ajax 함수 추가

<?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> 

내가 http://mysite.com/index.php/home/show/9/comm에서 myDiv의 DIV의 내용을로드 할. 뷰 쇼는 어떤 ID (9) 어떤 카테고리 (통신)의 URL에 따라 데이터를 표시합니다 : 나는 foreach 문에 기능을 추가하는 시도하고 GET 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> 

일 : 당신의 loadXML의 문서 기능에 당신이에서 호출 그래서 상관없이 하드 코딩 된 항목의 ID를했습니다

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

답변

0

, 항상 동일한 데이터를 가져올 수 있습니다. 당신은 최소한에, 클릭 된 버튼과 관련된 항목 ID를 전달해야합니다

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로 아약스 작업을하는 것이 훨씬 쉽습니다 (전체 loadxmldoc 함수는 SINGLE jquery로 줄 수 있습니다). 또한 item id를 함수 호출에 내장 할 필요가 없으며 몇 가지 간단한 dom lookup을 사용하여 연관된 id를 웹 페이지의 dom에서 직접 가져올 수 있습니다.

관련 문제