0

これは私のプレビューの問題のよりクリーンなコードです。アイデアは ajax を使用して値を送信および取得することですが、値が送信されておらず、ajax が機能していないようです。このコードを更新したのは、この方法でどのマシンでも簡単にテストできるからです。初めてajaxを使用します。コードは次のとおりです。

Javascript

<script>
jQuery(document).ready(function() {
jQuery('#centro').click( function() {
$.ajax({
        url: 'request.php',
        type:'POST',
        data: $("#form").serialize(),
        dataType: 'json',
        success: function(output_string){
        alert(output_string);
                $('#cuentas').html(output_string);
            } // End of success function of ajax form
        }); // End of ajax call    

  });
 }
});
</script>

HTML:

  <?php
  $result = 'works';
  ?>

  <form id="form">
  <div id="centro">
  <a href="#">Click here</a>
  <br>
  <input type="hidden" name="centro" value="<?php echo $result; ?>">
  </form>

  <div id="cuentas">
  </div>

PHP ファイル、request.php

 <?php
 $centro = $_POST['centro'];
 $output_string = ''.$centro;
 echo json_encode($output_string);
 ?>
4

4 に答える 4

0

POST名が「centro」であることをAJAXに伝えていないようです。これを変更してみてください:

data: $("#form_"+i).serialize(),

このため

data: { 'centro' : $("#form_"+i).serialize()},
于 2013-05-01T15:56:51.630 に答える
0

これを試して:

HTML

<?php
    $i=0;
    $f=0;
    $consulta = $db->consulta("SELECT * FROM centro");
    if($db->num_rows($consulta)>0){
        while ($resultados1 = $db->fetch_array($consulta)){   ?>
        <form id="form_<?php echo $f++; ?>"> //begin form with its id
            <div class="centro" id="centro_<?php echo $i++; ?>">
                <a href="#"> <?php echo $resultados1['nombre_centro']; ?></a>
                <br>
                <input type="hidden" name="centro" value="<?php echo $resultados1['id_centro']; ?>">
                <!--this is the data that is going to be sent. I set up a hidden input to do it.-->
            </div>
        </form>
        <div id="cuentas" class="cuentas">
            <!--where data is  going to be displayed-->
        </div>
        <br>
        <?php  
        }
    } 
?>

Javascript:

<script>
jQuery(document).ready(function() {
    jQuery('.centro').on('click',function() {
        var formElem=jQuery(this).closest('form');
        jQuery.ajax({ 
            url: 'load_cuentas.php',
            cache: true ,
            type:'POST',
            dataType: 'json',
            data: $(formElem).serialize(),
            success: function(output_string){
                jQuery(formElem).next('div.cuentas').html(output_string);
                alert(output_string);
            } // End of success function of ajax form
        }); // End of ajax call 
    });
});

</script>

サーバーページ:

<?php
    include ('mysql.php');
    $db = new mysql();
    $centro = $_POST['centro']; //this is not getting any data. the whole ajax thing
    $consulta = $db->consulta("SELECT * FROM cuenta WHERE id_center = '$centro'");
    $output_string=array();
    if($db->num_rows($consulta)>0){
        while ($resultados1 = $db->fetch_array($consulta)){   
            $output_string []= 'test text';
        }
    }               
    mysql_close();
    echo json_encode($output_string);
?>
于 2013-05-01T16:00:21.227 に答える
0

POSTメソッドを介して呼び出す ajax 呼び出しで同じ問題に遭遇しました。私のデータは実際にメッセージ本文に渡されていました。次の方法でアクセスする必要がありました。

php://input 

これは、メッセージ本文から生データを読み取ることができる読み取り専用のラッパー ストリームです。

このラッパーの詳細については、このリンクにアクセスしてください。

以下を PHP ファイルに追加します。

$centro = file_get_contents("php://input");
// Depending on how you pass the data you may also need to json_decode($centro)
echo json_encode($centro); 
// See if you get back what you pass in

これにより、メッセージ本文が (投稿されたデータとともに) 読み取られ、そこで値にアクセスできました。

お役に立てれば。

于 2013-05-01T16:05:43.117 に答える