0

番号をインクリメントしてデータベースを更新してから、ページを更新せずに番号を表示しようとしています。JavaScriptを使用してMySQLを読み取り/更新する方法はありますか?

探し回ってみましたが、値を変更する別のプログラムを呼び出さなければならないようです。今私は持っています

<?php
require ("connect.php");

echo "connected!<br>";

$extract = mysql_query("SELECT * FROM articles")or die ("Not working");

//$numrows = mysql_num_row($extract);

while ($row = mysql_fetch_assoc($extract)) {

    $id = $row['id'];
    $article = $row['article'];
    $thumbsup= $row['thumbs_up'];
    $thumbsdown = $row['thumbs_down'];
    $date = $row['date_time'];
    $username = $row['username'];
    mysql_query("UPDATE articles SET thumbsup = 1");
}
?>

したがって、このページでデータベースが更新されたら、更新された値をJavaScript関数にどのように取得するのでしょうか。今、私はファイルからそれを読んでいます

xmlhttp.open("GET", "http://localhost/ajax/folder5/includes/a.txt", true);

あなたの助けをどうもありがとう!

4

2 に答える 2

3

データをフェッチするサーバー側スクリプトがすでにあるので、必要なのは、データを応答として返し、関数XMLHttpRequestを使用して処理することだけです。..etccallbackを返したい場合は、配列に入れてエンコードすることができます。提案されているように、を使用できます。PHPスクリプトでは、次のようなことができます。$id, $article, $thumbsupjson_encode()

$Response = array(
     'Id' => $id,
     'Article' => $article',
     'ThumbsUp' => $thumbsup
)

echo json_encode($Response);
exit;

また、Javascriptで、次のような応答ハンドラーを追加する必要がある場合があります。

xmlHttp.onreadystatechange = function() {

 if (syndLinkRequest.readyState != 4)
    return;

  var result = xmlHttp.responseText;

  /* if you've returned javascript instead of xml or text, 
    you can eval(result) to access the javascript variables returned.
  */

  // do your thing
  }

当然のことながら、テキストファイルにGETを使用する代わりに、データを要求する方法を変更する必要があります。この場合、PHPスクリプトに直接要求して、結果を返すことができます。

xmlhttp.open("GET", "/ajax/update.php", true); // this will return the response

基本的に、必要なのはそれだけです。より簡単な例については、ここを参照してください。

また、jQueryのajax関数も確認してください。

**編集**

追加情報を追加しました。(json_encodeを使用して)JSONである結果を返すため、コンテンツタイプのヘッダーを追加する必要があります。これは、スクリプトの最上部の部分のすぐ下に追加します<?php

header('Content-type: application/json');

そして、上記の例に基づいて、これを応答として持っていると仮定します。

$Response = array( 'Id' => $id,  'Article' => $article,'ThumbsUp' => $thumbsup);
echo json_encode($Response);
exit;

関数でこれを受け取ると、これはcallback(サンプル値を使用して)次のように変換されます。

{"Id":1,"Article":20,"ThumbsUp":30}

これは結果変数に与えられます:

var result = xmlHttp.responseText;

応答が評価されることを確認するためeval()に、結果文字列に使用して、プロパティにアクセスして値を取得できるようにします。これを例に取ってください:

var result = eval(xmlHttp.responseText);

それが完了すると、例に基づいてresult.ThumbsUp得られるような結果変数からプロパティにアクセスできます。30次に、その値を必要な場所に割り当てることができますdocument.getElementById('c').innerHTML = result.ThumbsUp;。これにより、より明確なアイデアが得られることを願っています。

使用上の注意、これeval()を読んでください。

于 2011-04-09T05:31:40.807 に答える
1

XMLHttpRequestを使用することで正しい方向に進んでいます。基本的には、(静的テキストファイルを取得する代わりに)必要な出力を持つスクリプトを作成する必要があります。

PHPAJAXスクリプトの出力に適した選択肢はJSONです。これに使用できますjson_encode。XMLを含む他の可能性もあります。

于 2011-04-09T04:23:53.627 に答える