2017-04-08 16 views
1

私はサーバー上に簡単なデータベースを持っています(テスト用)。 このPHPファイルはサーバー上にあり、URLを開くと機能します。 (HTTP:?//**.com/search.php ID = ABC)はエコーが戻っています "30"PHPからAjaxを使ってDivにエコーを取得

<?php 
$pdo = new PDO('mysql:host=*com; dbname=*test1', '*', '*'); 
$idV = $_GET['id']; 
$statement = $pdo->prepare("SELECT position FROM idtabelle WHERE idnumber = :idV"); 
$statement->bindParam(':idV', $idV); 
$statement->execute(); 
while ($row = $statement->fetch(PDO::FETCH_ASSOC)) 
{ $posV = $row['position']; }; 
echo $posV; 
?> 

はHTMLだけでテスト

<input type="text" id="txt1"> 
<button type="button" class="btn btn-info" id= "bt1">Info Button</button> 
<div id= "div1"> </div> 

のためである私が入力したときに私がすることを望みますテキストフィールドにコードを入力してボタンを押すと、PHPのエコーがDivに表示されます。 私はAjax GETを使うべきだと知っていますが、私はとても多くのことを試みましたが、何も効果がありませんでした。 私に助けてもらえますか?

編集:最後の試み:https://jsfiddle.net/qz0yn5fx/

<input type="text" id="txt1"> 
    <button type="button" class="btn btn-info" id="bt1">Info Button</button> 
     <div id="div1">Here </div> 

     <script> 
      $(document).ready(function() { 

    $("#bt1").click(function() {     
     $.ajax({ 
     //create an ajax request to load_page.php 
     type: "GET", 
     url: "http://**.com/search.php?id=a10 ",    
     dataType: "html", //expect html to be returned  

     success: function(response){      
      $("#div1").html(response); 
      alert(response); 
     } 

    }); 
}); 
}); 
     </script> 

良いが、私はすべての最初のトライをコピーし、次のフィドルを見てはいけない:

https://jsfiddle.net/jqv1ecpj/

+0

純粋なPHPを使いたい場合は、入力に名前を付けてフォームを使うか、hrefを使う必要があります。 –

+0

あなたが試したことを示すことができれば、私たちは助けることができます。 – chris85

+0

関連項目:[Jquery Ajaxを使用してMysqlからデータを取得する](http://stackoverflow.com/q/16707648/2298301)すでにPDO Prepared Statementを持っていますが、バックエンドは、そのリンクで見つかるmysql _ *()関数よりはるかに安全です。 –

答えて

0

あなただけの代わりに、簡単なPOSTリクエストを使用することができますGETリクエスト

あなたのPHPで
<form id="search" name="search" method="post"> 
    <input type="text" id="txt1" name="search_input"> 
    <button type="submit" class="btn btn-info" id="bt1">Info Button</button> 
    </form> 
    <div id="div1">Here </div> 

$(document).ready(function(){ 
    $("#search").on("submit", function(e){ 
    e.preventDefault(); 
    $.post("/search.php", $("#search").serialize(), function(d){ 
     $("#div1").empty().append(d); 
    }); 
    }); 
}); 

そして、({試みを使用することを忘れないでください}キャッチ{}):

try { 
    $pdo = new PDO('mysql:host=*com; dbname=*test1', '*', '*'); 
    $pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $idV = (isset($_POST['search_input'])) ? $idV = $_POST['search_input'] : exit('The search was empty'); 
    $statement = $pdo->prepare("SELECT position FROM idtabelle WHERE idnumber = ?"); 
    $statement->bindParam(1, $idV); 
    $statement->execute(); 
    foreach($statement -> fetchAll() as $row){ 
    echo $row['position']; 
    } 

    $pdo = null; 
    } catch (PDOException $e) { 
    die($e -> getMessage()); 
    } 

私は、これは(それをテストしていない)動作するはずだと思います。それが動作しない場合は私に教えて、私はそれをテストし、修正します。

+0

私はサーバー上でhtmlドキュメントを開き、数字を入力してボタンを押すだけでページを更新します。ボタンを押すだけと同じです。何も起こりません。 私は?id = abcでphp directを開くと、常に "Search empty"と表示されます。私の他のPHPファイルはこのように動作します。 –

+0

はい。私の例を使用すると、それは投稿要求だけを聞きます。ファイルに直接アクセスして、?id = abcをアドレスに追加しても機能させたい場合は、短絡if文を次のように変更することができます: '$ idV =(isset($ _ POST ['search_input' ])))? $ idV = $ _POST ['search_input']:$ idV = $ _GET ['id']; ' セキュリティ上の理由からこれを行うことはお勧めしません。 –

+0

私のせいで、私はローカルhtmlファイルとサーバー上のPHPで試してみました。 同じhtmlファイルをサーバにuloadingした後、それは動作します。 それではローカルでテストする方法はありませんか? –

関連する問題