使用MySQL、PHP、AJAX将值发布到数据库,而不使用jQuery

Post values to database using MySQL, PHP, AJAX without using jQuery

本文关键字:数据库 jQuery PHP MySQL AJAX 使用      更新时间:2023-09-26

这是生成产品显示的页面:

<?php
$q = intval($_GET['q']);
$databaseConnect = $_SERVER['DOCUMENT_ROOT'] . "/637415/globalScripts/sql_connect.php";
include($databaseConnect);
mysqli_select_db($con,"up637415_cms");
$sql="SELECT * FROM products WHERE prod_id = '".$q."'"; 
$result = mysqli_query($con,$sql);
while($row = mysqli_fetch_array($result))
  {
  echo 
 '<div class="prodWrapper">'
 . '<h2>' . '<span id="currentProdId">' . $row['prod_id'] . '</span>' . ' '  .    $row['prod_title'] . '</h2>' . '<form><input type="text" placeholder="Enter New Title" id="newProdTitle"/><input type="button" value="Commit" onclick="productTitleUpdate()"/></form> '
  . '<div class="prodimg">' . 
        '<img src="/637415/cms/images/products/' . $row['prod_img'] . '"'     . ' ' . 'alt="' 
            . $row['prod_title'] . ' ' . 'image' . '">' 
        . '<form class="clearit"><input type="file" value="Select Image" /><input type="submit" value="Upload & change image" /></form> '
  . '</div>' 
 . '<h3>' . 'Product Description:' .  '</h3>' .$row['prod_description'] . 
'<form class="clearit"><textarea class="clearit" rows="4" cols="50"  placeholder="Update product description"></textarea><input type="submit" value="Commit" /></form> '
  . '<p>' . 'Quantity Available:' . $row['prod_quantity'] . '</p>' . '<form><input type="text" placeholder="Enter Quantity" /><input type="submit" value="Commit" /></form> '    .
  '</div>'
  ;
  }
mysqli_close($con);
?> 

以下是Javascript文件,我正试图使用它将span id="currentProdId"answers"newProdTitle"的输入id中的值发布到MySQL数据库中

function  productTitleUpdate()
{
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("newProdTitle").innerHTML=xmlhttp.responseText;
 }
}
xmlhttp.open("POST","/637415/admin/scripts/updateProductTitle.php",true);
xmlhttp.send(newProdTitle=document.getElementById("newProdTitle").value);
xmlhttp.send(newProdTitle=document.getElementById("currentProdId").value);
}

以下是ajax使用的PHP文件:

<?php
$databaseConnect = $_SERVER['DOCUMENT_ROOT'] . "/637415/globalScripts/sql_connect.php";
    include($databaseConnect);
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
mysqli_select_db($con,"up637415_cms");
$sql="UPDATE products
SET prod_title='(newProdTitle from javascript file) WHERE prod_id=(currentProdId from javascript file)";
if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }
echo '1 record added' . ' ' . '<a href="/637415/admin/index.php">Go back to admin</a>';
mysql_close($con)
?> 

我不知道如何从javascript文件中获取值:

SET prod_title='(javascript文件中的newProdTitle)WHERE prod_id=(javascript文件的currentProdId)";

然后替换存储在数据库中的值。它还应该在不刷新页面的情况下刷新到新值。我一直在网上浏览如何做到这一点,但感觉有点失落。

任何帮助都将不胜感激。谢谢

好的,所以你在AJAX请求中使用POST方法,所以要将JavaScript值传递给PHP,然后传递给MySQL,你需要将变量值发送到你的PHP脚本,看起来你正在这样做。

通常,你必须序列化你试图发送的数据,比如:

var data = 'newProdTitle='+newProdTitle+'&currentProdId='+currentProdId;

因此,当它通过网络发送时,最终看起来是这样的:

newProdTitle=blahbalh&currentProdId=8392

您必须通过XmlHttpRequest将数据发送到PHP。这里有一个关于如何做到这一点的例子

最后,在PHP中,您只需将收到的值引用为$_POST['newProdTitle']$_POST['currentProdId']

xmlhttp.send(newProdTitle=document.getElementById("newProdTitle").value);
xmlhttp.send(newProdTitle=document.getElementById("currentProdId").value);

到这个

var params = "newProdTitle=" + document.getElementById("newProdTitle").value +"&currentProdId=" + document.getElementById("currentProdId").value;
xmlhttp.send(params);

现在从phpscript 中获取值

您可以直接调用POST,因为您正在使用POST

示例

$newProdTitle = $_POST['newProdTitle'];
$currentProdId= $_POST['currentProdId'];