将AJAX值返回到Javascript变量

I have spent hours looking for help with returning to Javascript the AJAX call to a php script.

What I am trying to do, is insert a value into a table, then return the id for that inserted row, which can then be used in a form, so when the time to update the table with the form data, it can specify where it should go (which row). I need to do this, so I can basically reserve the row, and it won't be stolen by another user.

This is the call I have been using:

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

The php values are valid (looking at the code, the values are displayed), and the var is declared outside of the javascript function.

This is the AJAX function:

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;
}

and the php code:

$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";

If I alert the value, it will return properly, but in the form, which is creating a DOM dynamic row for this value and data to be entered, it comes up with "undefined". Can anyone guide me how to make this work? I will admit I'm no AJAX expert, and I can't seem to get callbacks to work when I try them, and frankly, don't really understand how...

Thank you in advance for any help anyone can offer.

doukong1897
doukong1897 对不起我坏了我忘了问你要检索什么类型的数据?json还是只是文字?如果json使用json_encode(array('next_id'=>$nextId));或者如果只是文本,那么你的脚本就好了。
大约 7 年之前 回复
doujing5726
doujing5726 检查这个链接,了解为什么PDO比mysql_*扩展更好用,以及使用jQuery做Ajax的这个链接。希望它有助于作为一个起点;)
大约 7 年之前 回复
dongmangwei3822
dongmangwei3822 在PHP代码中添加结果没有区别。仍未定义。echojson_encode($nextId);
大约 7 年之前 回复
dou47732
dou47732 你是否可以提供一些代码来使它工作?
大约 7 年之前 回复
dongsui4658
dongsui4658 你能告诉我在哪用吗?在PHP中代替echo?
大约 7 年之前 回复
douxun1934
douxun1934 一般评论:使用jQuery和PDO
大约 7 年之前 回复
dongshang5862
dongshang5862 在php脚本中使用echojson_encode
大约 7 年之前 回复

1个回答



我知道有点难以理解ajax Newbies的Ajax调用方法,
在这里我建议用Jquery做这个。 发布ajax调用方法!</ p>

这里是这样做的方式,</ p>

使用jQuery .post()函数</ em> < / p>

您可以通过此函数将数据传递到任何外部php文件并获取输出。

(它自动对远程php文件进行ajax调用)</ p>

 &lt;!DOCTYPE html&gt; 
&lt; html&gt;
&lt; head&gt;
&lt; ; script src =“http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js”&gt;
&lt; / script&gt;
&lt; script&gt;
$( 文件).ready(function(){
$(“button”)。click(function(){
$ .post(“getID.php”,
{
q:“some data”,// here 将要传递的变量设置为$ _POST
i:“some data”//这里设置要传递的变量为$ _POST
},
function(data,status){
alert(“PHP file” 输出:“+ data +”
Status:“+ status”;
//这里使用“data”变量输出php文件,“status”是可选的
});
});
});
&lt; / script&gt;
&lt; / head&gt;
&lt; body&gt;

&lt; button&gt;向php文件发送HTTP POST请求并返回结果&lt; / button&gt; \ n
&lt; / body&gt;
&lt; / html&gt;
</ code> < / pre>

PHP文件:</ p>

 &lt;?php 
$ q = $ _POST ['q'];
$ i = $ _POST ['i'];

$ query =“INSERT INTO parts(q,i)VALUES('”。$ q。“','”。$ i。“')”;

$ results = mysql_query($ query)或die(mysql_error());
$ nextId = mysql_insert_id();
echo“$ nextId”;

?&gt;
</ code> </ pre>
</ DIV>

展开原文

原文

I know its little bit tough to understand the Ajax call method for ajax Newbies, So here i would recommend to do this with Jquery .post ajax calling method !

here is the way of doing it,

using jQuery .post() function

you can pass data to any external php file via this function and get the output. (it automatically makes the ajax call to the remote php file)

<!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 + "
Status: " + 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 file :

<?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";

?>

drqn5418
drqn5418 谢谢,但我通过调用函数并传递“数据”得到它。 它现在很好用。 谢谢!
大约 7 年之前 回复
douan4359
douan4359 问题1:如果您可以共享用于表单更新的代码,那么很容易找到问题!
大约 7 年之前 回复
douqiandai4327
douqiandai4327 我只有两个小问题。 我第一次触发它时,我在字段中得到“未定义”,我希望将其放入表单中。 每隔一次我触发它(对于一个新行),它会填充值。 编辑 - 其他问题...我错过了POST而不是GET。 如果您有任何建议......我会在此期间看到自己可以理解的内容。 再次感谢!
大约 7 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐