0

PHPスクリプトへのAJAX呼び出しをJavascriptに戻すためのヘルプを探すのに何時間も費やしました。

私がやろうとしているのは、値をテーブルに挿入し、その挿入された行のIDを返すことです。これはフォームで使用できるため、フォームデータでテーブルを更新するときに、どこを指定できますかそれは行くべきです(どの行)。これを行う必要があるため、基本的に行を予約でき、別のユーザーに盗まれることはありません。

これは私が使用している呼び出しです:

id = getID('<?php echo $q; ?>','<?php echo $i; ?>');

PHP の値は有効で (コードを見ると、値が表示されています)、var は JavaScript 関数の外で宣言されています。

これは AJAX 関数です。

var xmlhttp;

function getID(q, i)
{
    xmlhttp=GetXmlHttpObject();
  if (xmlhttp==null)
  {
    alert ("Sorry but your browser does not support AJAX or Javascript has been disabled");
    return;
  }

  var url = "getID.php";

  url = url + "?q=" + q;
  url = url + "&i=" + i;

  // execute the fully formed request
  xmlhttp.onreadystatechange=stateChanged;
  xmlhttp.open("GET",url,true);
  xmlhttp.send(null);
}


function stateChanged()
{
  if (xmlhttp.readyState==4)
  {
      id = xmlhttp.responseText;
//    alert(xmlhttp.responseText);
//    return xmlhttp.responseText;
  }
}


function GetXmlHttpObject()
{
  if (window.XMLHttpRequest)
  {
    // code for IE7+, Firefox, Chrome, Opera, Safari
    return new XMLHttpRequest();
  }
  if (window.ActiveXObject)
  {
    // code for IE6, IE5
    return new ActiveXObject("Microsoft.XMLHTTP");
  }
  return null;
}

そしてphpコード:

$q  = $_GET['q'];
$i = $_GET['i'];

$query = "INSERT INTO parts (q, i) VALUES ('".$q."','".$i."')";

$results = mysql_query($query) or die(mysql_error());
$nextId = mysql_insert_id();
echo "$nextId";

値を警告すると、正しく返されますが、この値と入力するデータの DOM 動的行を作成しているフォームでは、「未定義」と表示されます。誰でもこの作業を行う方法を教えてもらえますか? 私は AJAX の専門家ではないことを認めます。試してみると、コールバックを機能させることができないようです。率直に言って、その方法を本当に理解していません...

誰でも提供できるヘルプを事前に感謝します。

4

1 に答える 1

3

ajax初心者のAjax呼び出し方法を理解するのは少し難しいことを知っているので、ここではJquery .post ajax呼び出し方法でこれを行うことをお勧めします!

ここにそれを行う方法があります、

jQuery .post() 関数を使用する

この関数を介して任意の外部 php ファイルにデータを渡し、出力を取得できます。(リモートphpファイルへのajax呼び出しを自動的に行います)

<!DOCTYPE html>
    <html>
    <head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
    </script>
    <script>
    $(document).ready(function(){
      $("button").click(function(){
        $.post("getID.php",
        {
          q:"some data", // here set the variables you want to pass as $_POST
          i:"some data"     // here set the variables you want to pass as $_POST
        },
        function(data,status){
          alert("PHP file Output: " + data + "\nStatus: " + status);
          // here take the the php file output using the "data" variable , "status" is optional  
        });
      });
    });
    </script>
    </head>
    <body>

    <button>Send an HTTP POST request to the php file and get the result back</button>

    </body>
    </html>

PHP ファイル:

<?php
$q  = $_POST['q'];
$i = $_POST['i'];

$query = "INSERT INTO parts (q, i) VALUES ('".$q."','".$i."')";

$results = mysql_query($query) or die(mysql_error());
$nextId = mysql_insert_id();
echo "$nextId";

?>
于 2013-08-05T02:55:25.057 に答える