0

ajax 呼び出しを使用して、mysql データベースからデータを取得しています。これは私のajax呼び出しです:

  $.ajax({
    type: "POST",
    url: "fetch.php",
    data: id,
    success: function(msg) {
        var record = JSON.parse(msg);
        $("#name").val(record.name);
        $("#description").val(record.description);
        switch(record.category) {
            case ("Residential"):
                $("#category").val("residential");
                break;
            case ("Modernisation & Domestic Extensions"):
                $("#category").val("modernisation");
                break;
            case ("Feasibility Layouts"):
                $("#category").val("feasibility");
                break;
            case ("Master Planning"):
                $("category").val("master");
                break;
            default:
                $("category").val("");
        };
        switch(record.featured) {
            case ("y"):
                $("#featured").val("y");
                break;
            default:
                $("featured").val("n");
        };
    }
})

これは私のphpファイルです:

       <?php 
       $dbc = mysqli_connect('XX','XX','XX','XX');

       $id = $_POST['id'];

       if($dbc) {
          $row = fetchDataFromRecordWithId($dbc,$id);
       }
       else {
          echo 'Database error';
       }

       function fetchDataFromRecordWithId($dbc,$id) {
          $q = "SELECT * FROM Projects WHERE id = ".$id;
          $r = mysqli_query($dbc, $q);

          $row = mysqli_fetch_array($r, MYSQLI_ASSOC);
          mysqli_close($dbc);
          return $row;
       }

       echo json_encode($row);
       ?>

すべてが問題なく動作しますが、php ファイルに if ステートメントを追加して POST データがあるかどうかを確認しようとすると、ajax 呼び出しが応答しません。さまざまな方法を試しました:

   <?php if(isset($_POST)) { .. my whole php code here .. } ?>

   <?php if(!empty($_POST)) { ..my whole php code here .. } ?>

   <?php if($_POST) { .. my whole php code here .. } ?>

   <?php if($_POST['id']) { .. my whole php code here .. } ?>

しかし、何も機能しません!上記の if ステートメントのいずれかを使用すると、Ajax 呼び出しで json データが返されません。

POST データを確認できず、そのままにしておくことができませんでしたが、適切な方法で行いたいと考えています。

if ステートメントが実行されていないようです (ただし$_POST['id']、if ステートメントが使用されていないときに値をフェッチできるため、POST データが存在する必要があります)。

if 文も外に出そうとしましたecho json_encode($row)が、どちらも役に立ちませんでした。何が間違っているのですか?

4

3 に答える 3

1
$.ajax({
  type: "POST",
  url: "fetch.php",
  data: id,

http://api.jquery.com/jQuery.ajax/ :

data: [...] オブジェクトはキーと値のペアである必要があります。

だからその線を作る

  data: { id : id },

代わりに、それは機能するはずです。

于 2013-03-17T15:37:10.717 に答える
0

コードのテストに従ってみてください

  1. php の正しいリクエスト ページがあるかどうかを確認してください。

  2. Google Chromesで右クリックして要素を検査し、コンソールタブにエラーが表示されていることを確認してください

  3. suceess:function(msg) に $("body").append(msg) を追加します

  4. 成功の前に関数を追加:関数(結果) {}

    error:function(xhr,err){ alert("readyState: "+xhr.readyState+"\nstatus: "+xhr.status); alert("responseText: "+xhr.responseText); }

于 2013-03-17T16:38:14.177 に答える