JavaScript Ajax 到 PHP,然后返回 Javascript

标签 javascript php ajax

好的,我有一个java脚本,当输入字段停止输入操作时,它会触发ajax调用。

//setup before functions
var field = document.getElementById("UPC");
var table=document.getElementById("ScannedItems");
var typingTimer; //timer identifier
var doneTypingInterval = 1000; //time in ms, 1 seconds

//on keyup, start the countdown
$('#UPC').keyup(function(){
  clearTimeout(typingTimer);
  typingTimer = setTimeout(doneTyping, doneTypingInterval);
});

//on keydown, clear the countdown 
$('#UPC').keydown(function(){
  clearTimeout(typingTimer);
});


function doneTyping () {
 //user is "finished typing," do something
 var upc=document.getElementById("UPC").value;
 document.getElementById("noScan").className="hidden";
 document.getElementById("checkout").className="";
 document.getElementById("void").className="";

 var dataString = 'upc='+ upc;
 //alert (dataString);return false;  
 $.ajax({  
    type: "POST",  
    url: "assets/PagePHP/pos/scan.php",  
    data: dataString,  
    success: function() {  
        var row=table.insertRow(-1);
        var cell1=row.insertCell(0);
        var cell2=row.insertCell(1);
        var cell3=row.insertCell(2);
        var cell4=row.insertCell(3);
        var cell5=row.insertCell(4);
        var cell6=row.insertCell(5);
        cell1.innerHTML =upc;
        cell2.innerHTML ="Description";
        cell3.innerHTML ="PRICE";
        cell4.innerHTML ="QTY";
        cell5.innerHTML ="TOTAL";
        cell6.innerHTML ="ACTION";
        field.value ='';
    }  
});  
return false;
}

ajax 获取输入到表单中的 UPC,并使用它来获取该特定商品的描述和价格。我需要知道如何将该信息放回到 Java 脚本调用中以在表中创建行。来自 PHP 的项目需要返回到以下行中的 java 脚本中:(从上面的脚本中提取)

cell1.innerHTML =upc;
cell2.innerHTML ="Description";
cell3.innerHTML ="PRICE";
cell4.innerHTML ="QTY";

我的 php 简短而简单,如下所示:

$result = mysqli_query($con,"SELECT * FROM inventory WHERE item_upc='$_POST[upc]'");

while($row = mysqli_fetch_array($result))
{
echo $row['item_upc'];
echo $row['item_description'];
echo $row['item_price'];
}

这一切都必须在不刷新页面的情况下完成。我已经用谷歌搜索了如何执行此操作,但无法获得符合我的情况的结果。

最佳答案

我会执行 AJAX 查询,并让 PHP 脚本返回一个包含数据的 JSON 字符串,您可以在 success 函数中对其进行解码和处理:

<?php
    header('Content-type: application/json');
    $con = ...; //establish_connection
    $result = mysqli_query($con,"SELECT * FROM inventory WHERE item_upc='$_POST[upc]'");

    $json = array();
    $json['success'] = false;

    while($row = mysqli_fetch_array($result))
    {
        $json['success'] = true;
        $json['item_upc'] = $row['item_upc'];
        $json['item_description'] = $row['item_description'];
        $json['item_price'] = $row['item_price'];
    }

    echo json_encode($json);
?>

供 AJAX 使用:

$.ajax({  
    type: "POST",  
    url: "assets/PagePHP/pos/scan.php",  
    data: dataString,
    success:function(data){
        if(data.success==true){
            // handle data array
            var row=table.insertRow(-1);
            var cell1=row.insertCell(0);
            var cell2=row.insertCell(1);
            var cell3=row.insertCell(2);
            var cell4=row.insertCell(3);
            var cell5=row.insertCell(4);
            var cell6=row.insertCell(5);
            cell1.innerHTML =upc;
            cell2.innerHTML = data.item_description;
            cell3.innerHTML = data.item_price;
            cell4.innerHTML ="QTY"; // handle these as you like
            cell5.innerHTML ="TOTAL";
            cell6.innerHTML ="ACTION";
            field.value ='';
        }
        else {
            // nothing returned - error
        }
    }
});
  • 似乎我们中的一些人已经说到了妙语,但您已经明白了需要做什么的要点,哈哈。

关于JavaScript Ajax 到 PHP,然后返回 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19106732/

相关文章:

javascript - 了解 Backbone.js 概念

php - preg_match_all 导致 child 死亡

php - Docker compose 命令没有这样的文件

php - 多语言 MySQL 内容 : how to select a given language or another if the one specified isn't available?

javascript - 数据过滤器在 ajax 中不起作用

http - PUT、DELETE、HEAD 等方法在大多数 Web 浏览器中都可用吗?

javascript - 将 jquery ajax (json) 附加到表

javascript - 对象数组操作

javascript - 如何在无限滚动加载页面上触发 coffeescript

javascript - 为什么 window.data 有效而不是 data