0

画像をクリックしたときにデータベースに値を挿入したいのですが、問題が発生しています。これが私のコードです:私は自分の投稿を編集しました。あなたが提案した変更を加えましたが、画像をクリックしても何も起こりません。

<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1"> 
<script src="jquery.js"></script>

<style type="text/css">
      body{background-color:black; background-repeat:no-repeat; position:absolute;width:100%;}
      img.imgnavbar{height:auto; width:15%; opacity: 1.0; padding:2%; z-index:100;}
      .menu{padding-top:3%;width:100%;}   
      img.shadow{height:100%; width:100%; bottom:0px; position:fixed; left:0%; z-index:-2;}

</style>

<script>
$(".imgnavbar").click(function() {
   var $myimage=$(this);
   $.ajax({
       type: 'POST',
       url: 'submit_form.php',
       data: { 'img_alt': $myimage.attr('alt') },
       success: function(){
          console.log("OK!");
       }
   });
});
</script>
</head>
<body>

<div  align="center" class="menu">
<img  src='images/green.png' id="green" alt="green" class="imgnavbar"/>
<img  src='images/blue.png' id="blue" alt="blue" class="imgnavbar"/>
<img  src='images/orange.png' id="orange" alt="orange" class="imgnavbar"/>
<img  src='images/red.png' id="red" alt="red" class="imgnavbar"/>
</div>
<img  src='images/shadow.png' id="shadow" class="shadow"/>
</body>

</html>

とphp:

<?php

    include ("db.php");

    $myimage        = htmlspecialchars(trim($_POST['img_alt']));

    $addCompany  = "INSERT INTO company (id,name) VALUES ('','$myimage')";
    mysql_query($addCompany) or die(mysql_error());

?>

アドバイスをお願いします。ありがとう!

4

4 に答える 4

4

送信された変数に異なる名前を使用しています。

data: { 'img_alt': $myimage.attr('alt') },

しかし、phpでは以下を使用します:

$myimage        = htmlspecialchars(trim($_POST['myimage']));

これを次のように変更します。

$myimage        = htmlspecialchars(trim($_POST['img_alt']));

また、コードはSQLインジェクションに対して脆弱であることに注意してください。PDO / mysqliに切り替えて、変数がバインドされたプリペアドステートメントを作成する必要があります。

于 2012-12-03T20:49:15.120 に答える
3

class属性を使用する必要があります。idattrを2回使用することはできません。

<script>
**$(".imgnavbar")**.click(function() {
   var $myimage=$(this);
   $.ajax({
       type: 'POST',
       url: 'submit_form.php',
       data: { 'img_alt': $myimage.attr('alt') },
       success: function(){
          console.log("OK!");
       }
   });
});
</script>
于 2012-12-03T20:53:05.097 に答える
1

間違った$_POSTパラメータにアクセスしているようです

また、すべての画像要素は同じIDを持っています。これはおそらく良い考えではありません。おそらく、クラスをハンドルとして使用してみてください。また、アプリをデバッグして、より意味のあるエラー情報を取得してみませんか。次のように、AJAX投稿からの応答を印刷できます。

success: function(response){
    console.log(response);
}

次に、PHPでvar_dump($ _ POST)を試して、何が行われているのかを確認します。

于 2012-12-03T20:55:12.603 に答える
0

最も重要なこと:各id属性は、ページごとに1回だけ使用できます。異なる要素に対して同じid属性を持たないようにする必要があります

于 2012-12-03T20:50:45.267 に答える