2013-09-05 47 views
3

我已經瀏覽了與此主題有關的其他各種問題,但我仍在努力尋找解決方案來查詢我的問題。使用AJAX將變量傳遞到PHP數組

在我的系統中,我允許管理員將額外的表格節點附加到文件中,以便他們可以輸入任何額外的所需數據,然後將該數據提交到數據庫以在網站的主要部分中生成頁面。

我對通過AJAX傳回數據的概念不熟悉,所以我可能會誤解某些內容,但這裏是我的代碼。

添加節點控制

<div id="nodeControl"> 
    <div id="addNode"> 
     <a id="nodeLink" href="#">+</a> 
    </div> 
</div> 

<div id="slideOut">Click to add a new section</div> 

添加節點點擊響應函數

var nodeCount = 2; 
     $("#nodeLink").click(function(){ 
      // Local Variables 
      var newSection = '<br/><div id="sectionInfo"><div id="sectionWrap"><div id="sectionInner"><label class="inst head">Section ' + nodeCount + '</label><input class="textOver" type="text" name="sectionTitle' + nodeCount + '" value="<?php $title; ?>"> <label class="inst ib">Please enter any text you would like associated with the section.</label> <textarea style="margin-top: 3px" name="sectionContent' + nodeCount + '" value="<?php $body; ?>"></textarea> <label class="inst ib">Please upload the image associated with this section, .PNG reccomended.</label> <input type="file" style="visibility:hidden;" name="img' + nodeCount + '" id="upload" /> <input type="button" id="fileStyle" class="fSOver" value="Upload Pump Image!" /> </div> </div> </div>' ; 

      // Append the new section to the document and increment the node count 
      $('#sections').append(newSection); 
      nodeCount += 1; 


      // Call AJAX to pass to PHP 
      $.ajax({ 
       type: "POST", 
       url: "../section.php", 
       data: { setSection : newSection }, 
       success: function() { 
        alert("Success, ajax parsed"); 
       } 
      }); 

      $(".successDiv").slideDown(150); 
      $(".successDiv").delay(1500).slideUp(150); 

      return false; 
     }); 

節點計數被實例化到「2」在這裏,當加入的節點的數量被附加到的name屬性我的表單上的任何輸入元素,即header2,header3等。 當我的表單最終被提交時,我可以遍歷每個數據字段並將其提交給數據庫。

正如我目前理解AJAX數據變量使用密鑰對{ a : b }其中a = return keyb = return value,我想PHP能夠訪問該返回的值,並將其存儲爲可通過設置在端成環的陣列。 目前,成功消息是在我的AJAX調用中觸發的,但我無法訪問PHP中的值,而是引發了「定義的段的未定義索引」。

$section = array(); 
$setSection = $_POST['setSection']; 
$section[] = $setSection; 
+0

感謝殺出我會考慮一些臨時存儲機制,我想,如果我將其存儲在一個數據庫我也不會明確地傳送回數據到PHP – Alex

+0

順便說一下,我希望你的JavaScript在加載DOM之後才運行? – Blazemonger

回答

5

PHP不會每隔setSection存儲您隨着時間傳遞的變量;每次你的腳本被調用時,它的變量都會被重置。您可能想要將變量存儲在數據庫或會話變量中。

這裏有一個方法,使用session variables

session_start(); // unless you already started one 
if (!isset($_SESSION['section'])) { 
    $_SESSION['section'] = array(); 
} 
array_push($_SESSION['section'], $_POST['setSection']); 
+0

我會嘗試,我已經使用'管理員'會話來處理用戶登錄,我猜我可以使用該會話來處理上述功能?但只是改變!isset爲isset – Alex

+0

我已經實現並理解它是如何工作的,但PHP仍在抱怨「setSection」是一個未定義的索引 – Alex

+0

因此,該變量沒有像您想象的那樣被髮布到腳本中? – Blazemonger