2017-02-20 3 views
2

更新内容で、ボタンIDを取得し、外部PHPファイルへのポストとのdivに外部ファイルをロードします。私はPHP、JavaScriptの、全体的にmysqliのに新しいですし、私もこのフォーラムに新しいです

私はウェブサイトを構築中です。 このサイトでは、以下のコードに見られるように、php whileループの結果としてページ上のボタンが生成されています。そのようなループの結果として、自分のIDを持つ各:私は本当に達成するためにしたいどのような

while ($row = mysqli_fetch_assoc($run_c)){ 

    $memberid = $row['ID']; 
    $convoid = $row['c_id']; 

    echo" 
<button class='convoid' onClick='getconvo($convoid);'>Open</button> 
"; 
} 

がある:私はボタンのいずれかをクリックすると、特定のID値が変数$ convoidから検出されましたそのVALUEは外部のPHPファイルに送られます。 ID VALUEを受け取った外部ファイルは、下のコードのようにdivにロードされますが、これは起こりそうではありません。これは私がこれまでのところ、このために持っているものです。

<div class='log'></div> 

<script type='text/javascript'> 
function getconvo(id){ 
id = id; 
$.ajax({ 
data: 'id=' + id, 
url: 'fetch_convo.php', 
method: 'POST', // or GET 
success: function(data) { 
$(".log").load(fetch_convo.php); 
} 

}); 

} 
</script> 

私も置かれている個々のロード機能をここにまだ何も

<script type="text/javascript"> 
    $(document).ready(function(){ 
    $('.log').load('fetch_convo.php'); 
}); 

</script> 

状況に追加するには、外部ファイルはPHPファイルです。結果は、ajaxを介してファイルに渡されたid VALUEに基づいてmysqliクエリから取得されます。私は結果をPHPファイルにエコーして、何らかの種類のデータをファイルにロードしたいdivに表示できるようにしました。

whileループと外部ファイルが動作しています(私は手動でIDを入力してテストしました)が、IDの値を外部ファイルに投稿してから、その外部ファイルの結果をdivにロードする方法id VALUEに基づいています。

助けがあれば助かります。私は新しいですし、次のように私がしようとしていますことを...

+0

POSTリクエストを実行すると、コンソールにエラーが表示されますか?要求はサーバー側に届きますか? –

+0

'getconvo'関数の' .load'呼び出しに二重引用符を入れるのを忘れたと思います。 – Jeanger

答えて

0

POSTリクエストを実行すると、コンソールにエラーが表示されますか?要求はサーバー側に届きますか?あなたが本当に欲しかったのは一度だけです。成功コールバック内で​​を実行すると、決してデータIDをポストしません。とにかく、以下のコードを試してみてください。すべての

まず、それはそうのようなデータ属性にIDを入れた方が良いですし、私たちはクラス名convoid(我々はこれを必要とする)持っていることに気づい:

echo" <button class='convoid' data-id='$convoid'>Open</button>"; 

はその後、我々はクラス名convoidのようにハンドラをクリックして登録を次のようになります。

// document ready 
$(function() { 
    // register click handler 
    // this will attach to all elements with `convoid` class's name 
    $(document).on('click', '.convoid', function() { 

     var convoid = $(this).data('id'); // get the ID from data-attribute 

     // do post request using .load() 
     // noticed that, we send together data during request 
     $('.log').load('fetch_convo.php', {id : convoid}, function() { 
      // do something when success 
     }); 
    }); 
}); 
+0

実際、これは動作していますが、ボタンをクリックすると、phpのwhileループの最初の値VALUEを取得します(つまり、PHPから変数$ convoidに割り当てられている最初の値ループ)。私はこれが起こっていることを確認するために外部PHPファイルにID VALUESをエコーし​​ました。 mysqliデータベースでは、2つのレコードしか存在せず、いずれかのボタンがクリックされると、最初のレコードの最初のID VALUEを検出します。どうして? – maraj

0

あなたecho文を変更できることに注意してください:

:あなたのコード、次のようにボタンの生成されたHTMLコードを使用して

echo "<button class='convoid' onClick='getconvo(\"{$convoid}\");'>Open</button>"; 

<button class="convoid" onclick="getconvo(c_id2);">Open</button> 

以上存在していない変数c_id2、探し始めます。あなたはむしろこれを望みます:

ブラウザでJavascriptコンソールを使用してエラーに気づき、修正してください。

更新:スニペットは、私は上記の記述しようとしています何を実証します。

<script> 
    some_convo_id = "This is coming from the some_convo_id variable"; 
    function getconvo(convoid) { 
     alert(convoid); 
    } 
</script> 

<?php 
$convoid = "some_convo_id"; 

echo "Below, when you click on 'Open', it passes 'some_convo_id' as a string to the function 'getconvo()'"; 
echo "<br>"; 
echo htmlspecialchars("<button class='convoid' onClick='getconvo(\"{$convoid}\");'>Open</button>"); 
echo "<br>"; 
echo "<button class='convoid' onClick='getconvo(\"{$convoid}\");'>Open</button>"; 

echo "<br><br>"; 

echo "Below, when you click on 'Open', it passes value of the variable some_convo_id as a string to the function 'getconvo()'"; 
echo htmlspecialchars("<button class='convoid' onClick='getconvo($convoid);'>Open</button>"); 
echo "<br>"; 
echo "<button class='convoid' onClick='getconvo($convoid);'>Open</button>"; 

?> 
+0

どこからc_id2を取得したのか分かりません。私のコードでそれを見ましたか?どこ? – maraj

+0

いいえ私はコードでそれが表示されません。どこにもない。私はあなたがあなたのデータベースから取り込んだ値を知りません。後で '$ convoid'に割り当てられ、生成されたHTMLで使われています。例として、 '$ convoid'の任意の値に基づいてHTMLがどのように生成されるかを述べました。その主なポイントは、文字列として扱い、 'getconvo()'関数に渡すのではなく、$ convoidの値の名前で変数を探すことを伝えることです。そして、まあ、Javascriptは同じことを言うでしょう、私は変数c_id2をどこにも見ません。 – uautkarsh

+0

大丈夫です。しかし、私はあなたがjavascriptから上記のようにそのエラーを取得していなかった。 $ convoidの値は、私が警告するために認識されました。 – maraj

関連する問題