Javascript mysql查询后如何在ajax中获取Json数据

Javascript mysql查询后如何在ajax中获取Json数据,javascript,ajax,json,Javascript,Ajax,Json,对于我的书店,我开始建立一个现金台脚本。这是一个非常简单的表单,带有ajax动态搜索。这是本地PC的脚本,因此该脚本不会发布到web上 当我扫描EAN代码时,我会在表格中填写标题、作者、编辑和价格。这本书准备好放进篮子里了 现在我试图在这个脚本中引入Json:但我不明白如何在脚本中获取mysql查询的值,并将它们放入我的cashdesk表单的正确字段中 我已经测试了Mysql查询和Json 询问 <?php header('Content-Type: text/html; charset=

对于我的书店,我开始建立一个现金台脚本。这是一个非常简单的表单,带有ajax动态搜索。这是本地PC的脚本,因此该脚本不会发布到web上

当我扫描EAN代码时,我会在表格中填写标题、作者、编辑和价格。这本书准备好放进篮子里了

现在我试图在这个脚本中引入Json:但我不明白如何在脚本中获取mysql查询的值,并将它们放入我的cashdesk表单的正确字段中

我已经测试了Mysql查询和Json

询问

<?php
header('Content-Type: text/html; charset=ISO-8859-1');

include('connexion.php');
$connect_db = connect();

$i = 0;
$tmp = array();


$fetch = mysql_query("SELECT jos_vm_product.product_id,product_name,product_author,product_editor,jos_vm_product_price.product_price FROM jos_vm_product INNER JOIN jos_vm_product_price ON (jos_vm_product.product_id = jos_vm_product_price.product_id) WHERE product_EAN = '$_POST[EAN]'");

while ($row = mysql_fetch_array($fetch, MYSQL_ASSOC)) {
$tmp[$i] = $row;
}
echo json_encode($tmp);

close();
?>
ajax脚本

var xhr = null;
  function getXhr()
  {
  if(window.XMLHttpRequest) xhr = new XMLHttpRequest();
  else if(window.ActiveXObject)
  {
  try
  {
  xhr = new ActiveXObject("Msxml2.XMLHTTP");
  }
  catch (e)
  {
  xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
}
else
{
alert("Not Working");
xhr = false;
}
}

function ajaxEAN()
{
getXhr();
xhr.onreadystatechange = function()
{
if(xhr.readyState == 4 && xhr.status == 200)
{

var data = '{"product_id": "product_id", "product_name":"product_name", "product_author":"product_author", "product_editor":"product_editor", "product_price":"product_price"}';

oData = JSON.parse( data);
for( var i in oData){
document.getElementById( i).value = oData[i];
}

}
}
xhr.open("POST",'ajaxrecupaddr.php',true);
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
EAN = document.getElementById("EAN").value;
xhr.send("EAN="+EAN);
}

谢谢你的帮助

据了解,您不能从响应中获取JSON。如果是这样,您只需执行以下操作:

xhr.onreadystatechange = function()
{
   if(xhr.readyState == 4 && xhr.status == 200) {        
     oData = JSON.parse(xhr.responseText);
     for(var i = 0; i < oData.length; i++) {
         for( var key in oData[i]){
            document.getElementById(key).value = oData[i][key];
         }    
     }
}
你最好使用:

header('Content-Type: application/json;');
此外,在下面的第行中,您可以使用SQL注入:

$fetch = mysql_query("SELECT jos_vm_product.product_id,product_name,product_author,product_editor,jos_vm_product_price.product_price FROM jos_vm_product INNER JOIN jos_vm_product_price ON (jos_vm_product.product_id = jos_vm_product_price.product_id) WHERE product_EAN = '$_POST[EAN]'");
你至少应该做
WHERE-product\u-EAN='$\u-POST[EAN].'
而不是简单地做
WHERE-product\u-EAN='..mysql\u-real\u-esape\u字符串($\u-POST[“EAN]”)。“

$fetch = mysql_query("SELECT jos_vm_product.product_id,product_name,product_author,product_editor,jos_vm_product_price.product_price FROM jos_vm_product INNER JOIN jos_vm_product_price ON (jos_vm_product.product_id = jos_vm_product_price.product_id) WHERE product_EAN = '".mysql_real_esape_string($_POST["EAN"]) . "'");

了解更多关于。当您在EAN中有
符号时,它将正确地避开所有潜在的危险符号,并将您从错误中解救出来。另外,请阅读上面链接的页面上显示的警告。您最好更改您的数据库扩展,因为MySQL扩展已被弃用。

Wow!这是一个非常不安全的PHP脚本。你是说你不能从响应中获取JSON并在JS中使用它吗?请重新构造你的问题。。加上你所做的。。你从中得到了什么。。。这是预期的。此脚本不适用于web。。。这是为我的现实生活商店准备的。是的,我不明白如何在JsI中使用我的json,我已经对我的帖子做了一些更正。我已经为我试图在javascript中使用的Json添加了一个示例。FAngel,你的解决方案不起作用,我不明白为什么。学习如何使用开发工具或firebug(取决于你的浏览器)。它将帮助你发现问题。另外,看看最新的答案。For循环已更改。PHP返回一个对象数组。您正试图使用它,就像使用一个简单的对象一样。我找到了这个解决方案,结果是:我找到了这个解决方案,结果是:oData=JSON.parse(xhr.responseText);对于(oData中的变量i){document.getElementById(“product_id”).value=oData[0]。product_id;document.getElementById(“product_name”).value=oData[0]。product_name;document.getElementById(“product_author”).value=oData[0]。product_author;document.getElementById(“product_editor”).value=oData[0].product\u editor;document.getElementById(“product\u price”).value=oData[0]。product\u price;}谢谢.Hm。你试过我的更新代码了吗?它也应该起作用。而且也没那么罗嗦)
$fetch = mysql_query("SELECT jos_vm_product.product_id,product_name,product_author,product_editor,jos_vm_product_price.product_price FROM jos_vm_product INNER JOIN jos_vm_product_price ON (jos_vm_product.product_id = jos_vm_product_price.product_id) WHERE product_EAN = '$_POST[EAN]'");
$fetch = mysql_query("SELECT jos_vm_product.product_id,product_name,product_author,product_editor,jos_vm_product_price.product_price FROM jos_vm_product INNER JOIN jos_vm_product_price ON (jos_vm_product.product_id = jos_vm_product_price.product_id) WHERE product_EAN = '".mysql_real_esape_string($_POST["EAN"]) . "'");