0

もう一度質問しなければなりませんでした、すみません。そのため、この jQuery を実行して、PHP ループ出力のスパンをスライドさせています。各アイテムのより詳細な情報を取得するために、db への呼び出しを生成する PHP があります。

これまでのところ、PHPスクリプトを呼び出すことができました。PHP ファイルから HTML がエコーされて返されるパケットを確認できます。しかし、返されたデータを指定されたスパンに挿入するためにjQueryを取得するのに苦労しています。

これは、ループ項目がどのように見えるかを簡略化したものです:

<span class="searchitem">

 <span style="visibility:hidden;" class="name">some name</span>

 <span class="btn">Details</span>

 <span class="itemdetails" style="display: none;">
   //hidden area to populate with returned ajax html from php script 
 </span>

</span>


<span class="searchitem">

 <span style="visibility:hidden;" class="name">another name</span>

 <span class="btn">Details</span>

 <span class="itemdetails">
   <div>
     <p>
     this is the area i need the html to populate
     </p>
   </div>
</span>

</span>.................

これは、実行しようとしている jQuery です。私はすべてがうまくいくことを知っています。そこからデータを取得できません。

<script type="text/javascript">   
      var ajax_load = "<img src='images/loading.gif' style='width:50px;' alt='loading...' />"; 
      var loadUrl = "ajax/item_details.php";
      $(document).ready(function ()
              {
                    $('.searchitem').each(function () {

                    var itemname = $(this).find('.name').text();
                    var ename = encodeURI(itemname);
                    var requestUrl = loadUrl + ename;
                        $(this).find('.itemdetails').hide();
                        $(this).find('.btn').click(function ()
                        {
                            var returned = "";
                                $.ajax({
                                type: "GET",
                                url: loadUrl,
                                data: "name=" + ename,
                                dataType: "text",
                                error: function () { alert("error") },
                                success: function (data) { $(".ptavail").append(data); alert("successful") }
                                }); 
                    $(this).parent().find('.ptavail').html(ajax_load).slideToggle(1500).html(returned);
                        });
                    });
              });
</script>

コードからわかるように、クリック機能をすべてオフに設定しようとしています。PHPファイルが呼び出しを受信して​​データを返していることは知っていますが、jQueryを取得して.itemdetailsに返されたデータを入力しようとして立ち往生しています。

これの何が問題なのですか?AJAX を必要なように動作させるために別の関数に入れる必要がありますか、それとも動作させるために同期させる必要がありますか? 私は基本的に.itemdetailsスパン間のすべてを最初に読み込みシンボルに置き換え、次にAJAXで返されたデータに置き換えようとしています..現在、エラーアラートが表示されるため、ajax呼び出しに問題がありますPHP は結果を返しますが、AJAX で結果を読み取るには問題があることがわかっています。

ヘッダーのコンテンツ タイプがテキストであることがわかりますが、AJAX で適切に呼び出しを行うにはどうすればよいでしょうか?

4

1 に答える 1

1

置く$(this).parent().find('.itemdetails').html(ajax_load).slideToggle(1500).html(data);

Ajaxリクエストの「成功」部分の内部。

success: function(data) {
  $(this).parent().find('.itemdetails').html(ajax_load).slideToggle(1500).html(data);
}

成功関数は、「Ajaxが機能したときに、これを実行する」と言うためにあります。

于 2012-11-11T14:02:22.680 に答える