2017-01-02 12 views
0

AJAXを使用してデータベース内のデータを検索またはフィルタリングしようとしましたが、oninputイベントを使用して機能をトリガーしました。しかし、それは動作していない、誰かが私のコードで何が間違っているのを見つけるのを助けることができますか?私はちょうどajaxの初心者です。入力フィールドに取得したデータを入れる方法 -

は、PHPの配列をエコーすることはできません。ここに私の入力フィールド、

<div class="form-group"> 
       <label for="stud_num">Student Number</label> 
       <input type="text" name="stud_num" class="form-control stud_num" oninput="loadinfo()" id="stud_num" placeholder="Student Number" style="max-width:150px;" required> 
     </div> 

は、ここでは、私の関数のだここ

function loadinfo(){ 
    var stud = $("#stud_num").val(); 
    $.ajax({ 
     url:'getrecords.php', 
     method:'POST', 
     data:{ 
     "loadinfo": 1, 
     "stud": stud, 
     }, 
     success: function(data){ 
     $('#firstname').val(data.firstname); 
     } 
    }); 
    } 

PHPコード、

if(isset($_POST['loadinfo'])){ 
    $stud = $_POST['stud']; 

    $sql = "SELECT * FROM studmast WHERE stud_no ='$stud'"; 
    $result = mysqli_query($con,$sql); 

     while($row = mysqli_fetch_array($result)){ 
        $data[] = array(
         'lastname' => $row['lastname'], 
         'firstname' => $row['firstname'], 
         'midname' => $row['middlename'] 
         ); 
      } 
      echo $data; 
    } 
+1

配列を直接エコーすることはできません - > 'echo $ data;'。 ['json_encode()'](http://php.net/manual/en/function.json-encode.php) - > 'echo json_encode($ data);'を使用してください。 – Sean

+0

私はajaxを** dataType: 'json'、**に入れる必要がありますか? – nethken

+0

jQueryと 'Intelligent Guess' - > [*何も指定されていなければ、jQueryは応答のMIMEタイプに基づいて推論しようとします。](http://api.jquery。 com/jquery.ajax /)。 – Sean

答えて

4

...クライアントが簡単に使用できるデータ形式を送信する必要があります。現在最も一般的なのはjsonです。

使用json_encode()

echo json_encode($data); 

を試してみてください

変換し、dataType:'json他人として@nethken $.ajax

+0

まだ動作していない、私はライブ検索をしようとしています。 ** oninput **イベントは間違ったアプローチですか?すでに 'json_encode'に変更しようとしました。 – nethken

+0

'onchange'を使用するか、キーイベントを使用してエラーハンドラをajaxに追加してください。ブラウザのdevツールネットワークの実際のリクエストを調べて、それが作成されているかどうか、ステータスは何か、送受信される内容は期待通りです – charlietfl

+0

** data.firstname **の '.firstname'を削除すると値はありますが、 '[object Object]'です。 – nethken

0

私がコメントに返信まだできませんので...で述べた、使用を設定して確認しますjson_encode。データが問題のPHPファイルに投稿されていることを確認してください。これは、開発者ツールのコードをデバッグすることで確認できます。コードをステップ実行するか、送信する前に値を警告する(JavaScriptクライアント側のデバッグ)。

次に、あなたのPHPファイルでvar_dump($ _ POST ['stud'])を実行すると、値が取得されているかどうかが確認されます。デベロッパーツールのネットワークトラフィックに行き、PHPファイルのプレビューを選択すると、データが表示されます。 xDebugをお持ちの場合は、コードをステップバイステップで実行して、デバッグすることはできません。

関連する問題