1

私はDIVを持っており、次のことを行います。

  1. ユーザーがクリックしたときにdiv(display:none)を非表示にします(この部分は解決しました)
  2. MySQLデータベースを更新します(これは私の質問に関係するものです)

私はこのスクリプトをSOで見つけたので、ドキュメントの先頭に座っています

<script>
    function myScript(imageID)  { 
      url="updateDatabase.php?imageID=" + imageID;
      objX=new XMLHttpRequest();
      objX.open("GET",url,false);
      objX.send(null);
      response=objX.responseText;
      document.getElementById('image' + imageID).innerHTML=response;
    }
</script>

そして、これがページ内のDIVのコードであり、コードの他の場所で設定されたimageIDを使用して、ロードしてスクリプトに渡す画像を決定します。

echo "
<div id=\"image".$imageID."\">
    <img
        src=\"images/".$imageID.".png\" 
        onclick=\"myScript(".$imageID.");
            document.getElementById('image".$imageID."').style.display = 'none'
    \">
</div>";

そして、これがスクリプトが参照するupdateDatabase.phpページです。これは、同じサイトの他の場所で正常に使用されている、コード内の他の場所で定義された関数を参照するPHPの1行です。一連のMySQLクエリ/挿入/更新を実行します。

updateImage($_GET['imageID']);

クリックするとDIVを非表示にすることに成功しましたが、同じ手順でデータベースを更新するようにDIVを取得できないようです。これは、私には欠けている部分です。

必要なimageIDを正常に渡していることはわかっています。これは、必要に応じて、このupdateDatabase.phpページに正しく出力できるためです。ただし、データベースアクティビティを発生させることはできません。

私が収集したものから、これにはJQueryやAJAXの組み合わせが必要です。私はPHP/MySQLの基本的な知識を持っていますが、これは私にとってまったく新しい領域であるため、説明をいただければ幸いです。また、私はSOに不慣れであり、重要な情報を省略したり、ポストコンベンションを無視したりした場合は、事前に謝罪します。その場合はお知らせください。

4

3 に答える 3

0

このチュートリアルのコードを分析することで問題を解決することができました。このチュートリアルでは、このタイプの操作の「可動部分」を正確にレイアウトする方法を示しました。私と同様の質問がある人は、これを参照として使用する必要があります。すべてのサンプルページに完全なバグのないコードがあります。

于 2013-03-24T03:56:44.947 に答える
0

jQuery を使用します。

onclick="myScript('.$imageID.')"

そして機能:

function myScript(imageID) {
    $('#image'+imageID).hide();
    $.ajax({
      url: 'updateDatabase.php?imageID='+imageID;
      async: true,
      type: 'get',
      success: function(data) {
           $('#image'+imageID).html(data);
            $('#image'+imageID).show();
      },
      error: function(jqXHR,error, errorThrown) {  
           if(jqXHR.status&&jqXHR.status==400){
                alert(jqXHR.responseText); 
           }else{
               alert("Something went wrong");
           }
      }
   });

ここで、data.response は、返される JSON の正確な性質に依存します。それが JSON ではなく生の HTML である場合、それはそれほど違いはありません。http://api.jquery.com/jQuery.ajax/のドキュメントを参照してください。

于 2013-03-23T17:05:07.417 に答える
0

jqueryを試す

$.ajax({
 url:"updateDatabase.php?imageID=" + imageID,
 type:"GET",//Default
 success:function(data, status){
   if(status){
     $("#'image"+ imageID).html(data);
     // do as per need
   }else{
    // else part
   }
 },
 error:function(-----){
--------------
 }
});

ありがとう

于 2013-03-23T17:05:37.890 に答える