3

このトピックに関連する他のさまざまな質問を調べましたが、クエリの解決策を見つけるのにまだ苦労しています.

私のシステムでは、管理者が追加のフォームノードをファイルに追加できるようにして、追加の必要なデータを入力できるようにしています。このデータは DB に送信され、サイトのメイン部分にページが生成されます。

私は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 属性に番号が追加されます。データ フィールドを作成し、データベースに送信します。

{ a : b }私が現在理解しているように、AJAX data 変数はwherea = return keyとのキーペアを使用しているため、b = return valuePHP がその戻り値にアクセスして、最後にループできる配列に格納できるようにしたいと考えています。現在、AJAX 呼び出しで成功メッセージがトリガーされますが、PHP の値にアクセスできません。代わりに、「定義されたセクションの未定義インデックス」がスローされます。

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

1 に答える 1

5

PHP はsetSection、時間の経過とともに渡されたすべての変数を保存するわけではありません。スクリプトが呼び出されるたびに、その変数がリセットされます。おそらく、変数をデータベースまたはセッション変数に格納する必要があります。

セッション変数を使用した 1 つのアプローチを次に示します。

session_start(); // unless you already started one
if (!isset($_SESSION['section'])) {
    $_SESSION['section'] = array();
}
array_push($_SESSION['section'], $_POST['setSection']);
于 2013-09-05T13:04:08.240 に答える