2017-02-22 6 views
1

データベースの行をドロップダウンリストから生徒の姓と姓に一致させて出力しようとしています。変数clickeditemにファーストネームと姓を格納する関数があります。私は物事のAjax/PHP側で間違っていなければなりません、おそらく変数にアクセスする方法でしょうか?ドロップダウンリストで名前をクリックすると、何も起こりません。また、私はPHPファイル内の '結果'をエコーし​​ています。どのようにしてAJAXが '成功'に対処できるように変更するのですか? HTMLとAjaxを使用してコード:mysqlデータを出力するphpファイルへのAjaxリクエスト

<script 

     $.ajax({ 
       type: "POST", 
       url: "out.php",    
       data: {item : item},    
       success: function(data){      
        $("#result").html(data); 
        //alert(response); 
       } 

       }); 
    }); 
</script> 

私が使用しているが、それは明らかに、すべて1になりますよう、文字列から最初の名前と姓を分離するために爆発します。

+0

[ブラウザのデベロッパーツールでAJAX要求/応答を監視しましたか?プロジェクトにjQueryライブラリを含めましたか?エラーが報告されていますか? Webサーバーでこれを実行していますか?](http://jayblanchard.net/basics_of_jquery_ajax.html) –

+0

PHPはAJAXによって返されるエコーされたものをエコーアウトする必要があります。 –

+0

@JayBlanchardはjqueryライブラリですが、 ''と書いてあります。ローカルホスト上で実行されています – Jub

答えて

2

あなたはあなたのコードの残りの部分が失敗する原因になりますテストを設定している:

$student = isset($_POST['clickeditem']); 

$studentは、最初を含む文字列、「true」または「false」のどちらかではないでしょうと姓。この時点でコードは失敗します。これに行を変更します。

$student = $_POST['clickeditem']; 

$student適切に設定されている、あなたが期待するようにコードの残りの部分は動作するはずです。

ます。また、クエリ自体(ANDが行くべきカンマ)でエラーを持っている:

WHERE student_forename=:forename, student_surname=:surname'); 

は次のようになります。

WHERE student_forename=:forename AND student_surname=:surname'); 

最後の一つです:あなたはecho $result;できないことがあるので、あなたのコードのこのセクション内の配列:

if($result['count'] == 1){ 
    echo $result; 
} 

あなたはどちらかでなければなりませんecho $result['count'];またはecho $result[0];を使用するか、AJAXリクエストによって返される別の形式に配列を変換します。

+0

まだ出力されていないので、この行になるまで答えをエコーし​​ます:$ st-> execute(array( 'forename' => $ fname、 'surname' => $ sname)); – Jub

+0

エコーは何の答えを出したのですか? –

+0

もう一度エコーアウトしてその行が停止してしまうまで、私はちょうど 'echo $ sname'と打ちました。 – Jub

0

fnameとsnameの前に$ signがないように見えるので、fnameとsnameの代わりに$ fnameと$ snameにする必要があります。

<?php 

    session_start(); 
    $student = isset($_POST['action']);  
    $studentnospace = explode(" ", $student); 
    $fname = $studentnospace[0];// Add dollar sign before each variable 
    $sname = $studentnospace[1]; // Add dollar sign before each variable 
    $pdo=new PDO('mysql:host=localhost; dbname=thename', 'root', 'root'); 
      $st = $pdo->query('SELECT COUNT(*) AS count FROM students WHERE student_forename=:forename, student_surname=:surname'); 
      $st->execute(array('forename' => $fname, 'surname' => $sname)); 
      $result=$st->fetch(); 
      if($result['count'] == 1){ 
       echo $result; 
      } 

?> 
+0

このコードは質問に答えるかもしれませんが、このコードが質問に答える理由および/または方法に関する追加の文脈を提供することで、長期的な価値が向上します。 –

+0

私のところにはエラーがありますが、まだ問題は解決していません。恐れ入ります。 – Jub

+0

コンソールのログclickeditemを追加してエラーを追加できますか?エラーのパラメータとしてajaxにコンソールのエラーを記録します。エラー:function(err){ console.log(err); //アラート(応答)。 } –

関連する問題