0

jQueryに問題があります。

これは私のjQueryコードです:

function UpdateRecord(id)
  {
      jQuery.ajax({
       type: "GET",
       url: "index.php",
       data: 'id='+id,
       cache: true,
       success: function(data)
       {
         $('#output').html(data);

       }
     });
 }

UpdateRecord(id) ここからデータを取得します:

echo"<select>";
    foreach($products->fetch_products($id) as $product)
    {
        $price = $product->price;
     echo"<option value = $product->id onclick=\"UpdateRecord($product->id)\">$product->p_name</option>";
    }
    echo"</select>";

これは、新しい結果が < である必要がある HTML および php コードの一部ですdiv id="output"></div>

$i = 0;
    foreach($products->fetch_products($id) as $pricer){
    if ($i==1) break;    
    echo"<td>";
    echo"<center>";
    echo("<div id=\"output\"><p>$pricer->price</p></div>");
    echo"</center>";
    echo"</td>";
    $i++;
    }

最後に、これは価格を返す PHP 関数です。

public function update_price($id){

        $stmt = $this->connect()->prepare("SELECT `price` FROM `products` WHERE id=?");

        $stmt->bindValue(1,$id);

        $stmt->execute();

        $row = $stmt->fetchAll(PDO::FETCH_OBJ);

         //echo json_encode($row);

         foreach($row as $data){

            echo $data->price;

         }
}

PHP 関数をテストしたところ、正しく動作しています。

問題は、dropdwon リストをクリックして製品を選択すると、次のように " " フィールドで全体tableが再び繰り返されることです。Price

普通 :

http://i44.tinypic.com/34473mp.jpg

問題 :

http://i43.tinypic.com/3449xmw.jpg

編集

これはtable

<tbody>

<?php




foreach($category->fetch_category() as $data){

    $id = $data->id;

    echo"<tr>";
    echo"<td>";
    echo"<center>";
    echo"<input type=\"hidden\" value=\"$data->id\" />";
    echo"<p><strong>".$data->cat_name."</strong></p>";
    echo"</center>";
    echo"</td>";
    echo"<td>";
    echo"<center>";

    echo"<select>";
    foreach($products->fetch_products($id) as $product)
    {
        $price = $product->price;
    echo"<option value = $product->id onclick=\"UpdateRecord($product->id)\">$product->p_name</option>";
    }
    echo"</select>";

    echo"</center>";
    echo"</td>";

    echo"<td>";
    echo"<center>";
    echo"<input class=\"input-mini\" type=\"text\" value=\"1\"/>";
    echo"</center>";
    echo"</td>";
    $i = 0;
    foreach($products->fetch_products($id) as $pricer){
    if ($i==1) break;    

    echo"<td id=\"$pricer->category_id\">";

    echo"<center>";
    echo("<div id=\"output\"><p>$pricer->price</p></div>");
    echo"</center>";
    echo"</td>";
    $i++;
    }
    echo"</tr>";
}

?>
<tr>
<td></td>
<td></td>
<td></td>
<td>Total: </td>
</tr>

</tbody>

前もって感謝します !私は一日中これを修正しようとしています...

4

3 に答える 3

0

同じページにリクエストを送信している場合は、ajax 呼び出しをチェックして、必要な html の部分で動作する必要がありますindex.php。あなたは電話をindex.php確認します

function UpdateRecord(id)
  {
      jQuery.ajax({
       type: "GET",
       url: "index.php",
       data: 'id='+id+'&ajax_call=1',
       cache: true,
       success: function(data)
       {
         $('#output').html(data);

       }
     });
 }

index.php

if($_REQUEST['ajax_call']){
$i = 0;
    foreach($products->fetch_products($id) as $pricer){
    if ($i==1) break;    
    echo"<td>";
    echo"<center>";
    echo("<div id=\"output\"><p>$pricer->price</p></div>");
    echo"</center>";
    echo"</td>";
    $i++;
    }
die();

}

編集

カテゴリごとにID付きの価格divがoutputあるため、IDの複製はこれを試してください

 foreach($products->fetch_products($id) as $product)
    {
        $price = $product->price;
    echo"<option value = $product->id onclick=\"UpdateRecord($product->id,$data->id)\">$product->p_name</option>";
    }
    echo"</select>";

    echo"</center>";
    echo"</td>";

    echo"<td>";
    echo"<center>";
    echo"<input class=\"input-mini\" type=\"text\" value=\"1\"/>";
    echo"</center>";
    echo"</td>";
    $i = 0;
    foreach($products->fetch_products($id) as $pricer){
    if ($i==1) break;    

    echo"<td id=\"$pricer->category_id\">";

    echo"<center>";
    echo("<div id=\"output-$data->id\"><p>$pricer->price</p></div>");
    echo"</center>";
    echo"</td>";
    $i++;
    }

JS

function UpdateRecord(id,cat_id)
  {
      jQuery.ajax({
       type: "GET",
       url: "index.php",
       data: 'id='+id,
       cache: true,
       success: function(data)
       {
         $('#output-'+cat_id).html(data);

       }
     });
 }
于 2013-08-23T20:44:19.973 に答える
0

リクエストHTMLを受け取った URL からページ全体をエコーし​​ている可能性があります。AJAXそれが、まったく新しいページを取り込み、$('#output'). AJAXリクエストを受け取っているページのコードを投稿できますか?

于 2013-08-23T20:35:24.610 に答える
0

AJAX リクエストは index.php に送られます。したがって、返されるデータは index.php ページ全体です。だからこそ、すべてが繰り返されています。

ajax コードが呼び出している別の PHP ファイルを作成し、その PHP ファイルで返す HTML を生成することをお勧めします。

于 2013-08-23T20:36:37.337 に答える