3

ページに 3 つのボタンがあり、ユーザーがクリックしているボタンに応じて、データベースで ajax 呼び出しを実行して削除クエリを実行したいと考えています。ユーザーがボタンをクリックすると、javascript 関数は動作しているように見えますが、php スクリプトでクエリを実行しません。

html ページ:

<?php session_start(); ?>
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-7"> 
<script>
    function myFunction(name)
    {
        var r=confirm("Are you sure? This action cannot be undone!");
        if (r==true)
        {
            alert(name); // check if is getting in if statement and confirm the parameter's value
            var xmlhttp;
            if (str.length==0)
            { 
                document.getElementById("clearMessage").innerHTML="";
                return;
            }
            if (window.XMLHttpRequest)
            {// code for IE7+, Firefox, Chrome, Opera, Safari
                xmlhttp=new XMLHttpRequest();
            }
            else
            {// code for IE6, IE5
                xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
            }
            xmlhttp.onreadystatechange=function()
            {
                if (xmlhttp.readyState==4 && xmlhttp.status==200)
                {
                    document.getElementById("clearMessage").innerHTML= responseText;
                }
            }
            xmlhttp.open("GET","clearDatabase.php?q="+name,true);
            xmlhttp.send();
        }
        else
            alert('pff');
    }
</script>
</head>
<body>
<div id="wrapper">
<div id="header"></div>
<div id="main">
    <?php if (session_is_registered("username")){ ?>
    <!--<a href="#">Εκκαθάριση παλαιών μηνυμάτων</a><br />
    <a href="#">Εκκαθάριση παλαιών συνεδρίων</a><br />
    <a href="#">Εκκαθάριση push notifications</a><br />-->
    <input type="button" value="Εκκαθάριση παλαιών μηνυμάτων" onclick="myFunction('messages')" />
    <input type="button" value="Εκκαθάριση παλαιών συνεδρίων" onclick="myFunction('conferences')" />
    <input type="button" value="Εκκαθάριση push notifications" onclick="myFunction('notifications')" />
    <div id="clearMessage"></div>
    <?php } else echo "Login first."; ?>
</div>
<div id="footer"></div>
</div>
</body>
</html>

およびphpスクリプト:

<?php
if (isset($_GET["q"]))
    $q=$_GET["q"];

$host = "localhost";
$database = "dbname";
$user = "dbuser";
$pass = "dbpass";

$con = mysql_connect($host,$user,$pass) or die(mysql_error()); 
mysql_select_db($database,$con) or die(mysql_error()); 

if ($q=="messages")
    $query = "DELETE FROM push_message WHERE time_sent IS NOT NULL";
else if ($q=="conferences")
    $query = "DELETE FROM push_message WHERE time_sent IS NOT NULL";
else if ($q=="notifications") {
    $query = "DELETE FROM push_friend WHERE time_sent IS NOT NULL";
}

$res = mysql_query($query,$con) or die(mysql_error());

if ($res)
    echo "success";
else
    echo "failed";

mysql_close($con);
?>
4

4 に答える 4

0

jquery -> ajax()を使用しないのはなぜですか?

コードは次のようになります。

function myFunction(name)
    {
        var r=confirm("Are you sure? This action cannot be undone!");
        if (r==true)
        {
            alert(name); // check if is getting in if statement and confirm the parameter's value

             $.ajax({
               type: "GET",
               url: "clearDatabase.php?q="+name,true,
               success: function (res){
                    $("#clearMessage").html(res );
              }
             });

        }
        else{
            alert('pff');
           }
    }
于 2013-11-06T16:02:45.010 に答える
0

いくつかの問題があります....そして、これはテキストを取得しましたclearDatabase.php...一般的なテキストを出力しました

<?php session_start(); ?>
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-7"> 
<script>
    function myFunction(name)
    {
        var r=confirm("Are you sure? This action cannot be undone!");
        if (r==true)
        {
            // Issue #1: str is not defined anywhere 
            var str = "sfs"; 

            alert("name " + name); // check if is getting in if statement and confirm the parameter's value
            var xmlhttp;
            if (str.length==0)
            { 
                document.getElementById("clearMessage").innerHTML="";
                return;
            }
            if (window.XMLHttpRequest)
            {// code for IE7+, Firefox, Chrome, Opera, Safari
                xmlhttp=new XMLHttpRequest();
            }
            else
            {// code for IE6, IE5
                xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
            } 
            xmlhttp.onreadystatechange=function()
            {
                if (xmlhttp.readyState==4 && xmlhttp.status==200)
                {
                    // Issue #2: responseText was not defined... it needs to belong to something
                    document.getElementById("clearMessage").innerHTML= xmlhttp.responseText;
                }
            } 
            xmlhttp.open("GET","clearDatabase.php?q="+name,true);
            xmlhttp.send();
        }
        else
            alert('pff');
    }
</script>

:実行する人は誰でも"clearDatabase.php?q="+name、データベースから何でも削除できます。また、これらの変更を行いますが、コードが機能しない場合は"clearDatabase.php?q="+name機能しない可能性があります。

また: コンソール エラーを提供していただければ、トラブルシューティングがはるかに簡単になります。

解決方法: これを自分でコピーしてドキュメントに貼り付け、Chrome バージョンの Firebug ( ) を開いたところ、定義されcontrol+shift+jていないことを示す赤いテキストが表示されました。strだから私はそれを と定義しましたvar str=""。その後、ヒットしていることに気付いたif (str.length==0)ので、値を付けます。その後、responseTextが定義されていないという新しいエラーが発生しました。javascript ajax呼び出し(jqueryしか知らない)からの応答フォームの使用方法をグーグルで検索し、例を見ました。リクエストからのものである必要があることがわかり、追加しましxmlhttp.responseText;た。その後、うまくいきました。

于 2013-11-06T16:41:49.357 に答える