2012-01-04 18 views
0

我有一些困難將正確的id函數傳遞迴AJAX。 我正在創建一個產品公告生成器,通過它的SKU代碼可以添加項目(工作正常)。我的問題是,當單擊公告時,該公告的預覽會加載到div中,並顯示與該公告相關的所有產品。
從這些結果中,我試圖添加從公告中刪除產品的功能。問題是,傳回AJAX的值僅屬於第一個產品。如果它是除第一個項目以外的其他項目,它不會發送屬於特定項目的值。我該如何返回已經通過ajax填充的div的id值

這是獲取經由AJAX加載到一個div並與與所選擇的公告

echo "<form name='myDelForm'> 
    $news_gen_id<br> 
    <input type='hidden' id='delccode' value='".$news_gen_id."'> 
    <input type='hidden'  id='deledit' value='".$edit."'> 
    <input type='button' onclick='ajaxDelCcode()' value='Delete' /><br></form> 
    </td>"; 

Ajax代碼相關聯的每個產品環(上的index.php(屬於main.php)的代碼,其中,在main.php也位於調用DIV)是這個

function ajaxDelCcode(){ 
    var ajaxRequest; // The variable that makes Ajax possible! 
try{ 
    // Opera 8.0+, Firefox, Safari 
    ajaxRequest = new XMLHttpRequest(); 
} catch (e){ 
    // Internet Explorer Browsers 
    try{ 
     ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP"); 
    } catch (e) { 
     try{ 
      ajaxRequest = new 
ActiveXObject("Microsoft.XMLHTTP"); 
     } catch (e){ 
      // Something went wrong 
      alert("Your browser broke!"); 
      return false; 
     } 
    } 
} 
// Create a function that will receive data sent from the server 
ajaxRequest.onreadystatechange = function(){ 
     if(ajaxRequest.readyState == 4){ 
     var ajaxDisplay = document.getElementById("ajaxMain2"); 
     ajaxDisplay.innerHTML = ajaxRequest.responseText; 
    } 
} 
var deledit = document.getElementById("deledit").value; 
var delccode = document.getElementById("delccode").value; 
var queryString = "?delccode=" + delccode + "&deledit=" + deledit; 
ajaxRequest.open("GET", "main.php" + queryString, true); 
ajaxRequest.send(null); 
} 
//--> 
</script> 

目前,使用這些兩段代碼,我可以成功地只刪除的第一個產品。當產品被循環時,delccode變量似乎沒有變化(儘管當我在循環中回顯變量時,它肯定會變成適當的值......它只是不能正確地將它傳遞迴AJAX。)

我嘗試了AJAX代碼,將它放入main.php產品循環中,並在每個循環中更改函數名稱(例如,ajaxDelCcode $ news_gen_id()),並且也將其放到按鈕本身,以便它調用特定於AJAX的AJAX它。如果你直接訪問main.php,但它在main.php被調用到div之後不能從index.php中運行。

我無法弄清楚如何從main.php傳遞正確的循環值專區內,回AJAX代碼上的index.php

誰能幫助我?

感謝,

達斯汀

+0

對於使用AJAX的人,我強烈建議使用jQuery的。它用少得多的手動編碼來完成Ajax,並且在瀏覽器之間更加兼容。 http://jquery.com/和http://api.jquery.com/jQuery.ajax/。事實上,我不能相信人們仍然這樣做。 – Dutchie432 2012-01-04 16:13:21

回答

0

而不是存儲在輸入ID的,只是把它作爲參數傳遞給函數:

function ajaxDelCcode(delccode) { ... 

<input type='button' onclick='ajaxDelCcode(\"".$news_gen_id."\")' value='Delete' /> 

另外,我會可以用引號如果我是你。或者更好的,而不是使用回聲,打破了PHP代碼和只寫HTML:

<? ... ?><input type="button" onclick="ajaxDelCcode('<?= $news_gen_id ?>')" value="Delete" /><? ... ?> 
+0

YES!快到了!我切換到您的第二個建議(打破與HTML之間的PHP代碼),並有一個有點麻煩,直到我意識到了var delccode =文件.getElementById(「delccode」)值;在功能上被幹擾我刪除了它,但有一個位碼衝突(與發電機的另一部分),因爲我需要把兩個delccode變量和deledit變量如果。我硬編碼deledit ID到腳本,而不是一個變量,然後一切工作正常。因此,我的最後一個問題是,我可以同時通過使用這種方法? – 2012-01-04 17:58:32

+0

是的,當然,只要他們用逗號分隔的delccode和deledit變量。 – 2012-01-04 18:08:42

+0

MWAHAHAHAHA !!!!重複的做法ajaxDelCcode(delccode,deledit)和everytthing工作smooooooooooooothly和甜蜜。我會重溫發電機其餘清理代碼,並切換到這種方法。非常感謝!這是完美的 – 2012-01-04 18:15:01

0

是什麼代碼使用刪除樣子?它是否與上面發佈的表單位於同一個php文件中?如果是這樣,表單是否意外地提交給自己?就像用戶在輸入類型=文本控制時按下Enter鍵一樣?我明白你想通過Ajax來做到這一點,但我懷疑表單是你的問題。

借調jQuery評論。

+0

近main.php頂部我有GET語句搶delccode和deledit瓦爾....然後我只是有如果($ delccode =「」!){// 回聲「$ delccode將刪除」; $ query =「DELETE FROM news_gen WHERE news_gen_id ='$ delccode'」; mysql_query($ query); $ delccode =''; \t} – 2012-01-04 17:28:37

+0

你或許應該逃避在SQL語句中的任何用戶輸入。 那麼,是從上面的一個PHP文件? $ delccode是否有默認值? – nobody 2012-01-04 17:34:32

+0

以上部分有兩個文件。 AJAX功能是在的index.php和按鈕調用該函數是main.php(被裝入公告已被選定後,才一個div)...刪除代碼爲它檢查後不久,main.php一個要刪除的變量和一個指定從哪個問題(deledit)中刪除的變量。 $ delccode沒有默認值。 – 2012-01-04 17:49:53

0

這裏試試這個

1)添加了jQuery文檔。

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 

2)給你的輸入名稱屬性

<input type='hidden' name='delcode' id='delccode' value='".$news_gen_id."'> 
<input type='hidden' name='deledit' id='deledit' value='".$edit."'> 

3)使用的功能是這樣的,而不是所有的代碼上面

function ajaxDelCcode() { 
    $.ajax({ 
    url: "main.php", 
    type: "GET", 
    dataType: "text", 
    data: $("#myDelForm").serialize(), 
    success: function(rText) { 
     $("#ajaxMain2").text(rText); 
    } 
    }); 
} 
相關問題