javascript - 使用 AJAX jQuery 从 PHP 脚本返回 JSON 数据
问题描述
项目目标:用户输入计算机的序列号,检查该编号,如果它与我们 Airtable 库中的计算机匹配,我们向其添加一些信息并在不同的选项卡中为其创建一个新条目。
我的经验:我在大学的 Java、C、数据结构和算法方面有很多经验。在开始这个项目之前,我在 Web 开发方面的经验是零,到目前为止,我已经掌握了 html、php、css 和 js 的基本知识。
我需要帮助:我目前对该项目的迷你目标是让用户输入序列号并将计算机信息显示在同一页面上。我的文件如下所示。我的 process.php 准确地检索给定序列号的计算机信息并将其转换为 JSON 对象。我的 my_script.js 是我与 test.php 一起使用的,用于练习在没有重定向或页面刷新的情况下显示用户输入。我的 myform.html 我相信是非常不言自明的,只是一个输入序列号的表格。我了解 my_script.js 中的代码如何工作,但需要帮助调整它以处理 JSON 返回。任何有关该项目的帮助、资源或总体想法将不胜感激。
我的表格.html
<html>
<head>
<title>Computer swap form</title>
</head>
<body>
<form method = "post" action = "test.php" id="computerForm">
Serial Number: <br>
<input name="serialnumber" type="text">
<button id = "sub"> Submit </button>
</form>
<!--display the response returned after form submit -->
<span id ="result"></span>
<script type="text/javascript" src = "https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script src="my_script.js" type="text/javascript"></script>
</body>
</html>
my_script.js
$("#computerForm").submit(function(e) {
e.preventDefault();
$.post(this.action, $(this).serialize(), function(info) {
$("#result").html(info);
});
});
进程.php
<?php
include('./Airtable.php');
include('./Request.php');
include('./Response.php');
use \TANIOS\Airtable\Airtable;
$airtable = new Airtable(array(
'api_key' => '***',
'base' => '***'
));
//$sn = $_POST['serialnumber'];
$sn = "a_serial_number"; //manual setting this produces correct info
$params = [
"filterByFormula"=>"AND({S/N} = '$sn')"
];
$request = $airtable->getContent('Computers', $params);
$response = $request->getResponse();
$data = $response['records'];
echo json_encode($data);
?>
测试.php
<?php
$sn = $_POST['serialnumber'];
if(!isset($sn))
{
echo "error serial number not set";
}
else {
echo "$sn successfully saved";
}
?>
解决方案
您可以给它一个"json"
参数来$.post
告诉它响应是 JSON,它会自动将响应解析为 Javascript 对象或数组。在下面的示例代码中,我假设它是一个数组,并且每个元素都是一个包含要在结果中显示的属性的对象;替换.someProperty
为实际属性。
$("#computerForm").submit(function(e) {
e.preventDefault();
$.post(this.action, $(this).serialize(), function(info) {
var html = "";
$.each(info, function() {
html += this.someProperty + "<br>";
});
$("#result").html(html);
}, "json");
});
process.php
可以$_POST['serialnumber']
在调用 Airtable API 时使用。
$sn = $_POST['serialnumber'];
推荐阅读
- css - 从上到下完全打印全屏覆盖,无需滚动
- c++ - 带有开放模板参数的 c++ 模板特化
- python - 'function'对象在django中没有属性'get'
- azure - Azure 函数连接到 Vnet 问题背后的 Azure Blob 存储
- python - 带有条件语句的 Python 布尔值
- c# - 将 System.Windows.Forms.Keys 转换为 Win32 虚拟键代码和修饰符
- page.js - 如何使用 page.js 在不完全重新加载的情况下导航到 URL?
- hyperledger-fabric - 在撤销用户证书时更新 Hyperledger Fabric 对等/通道
- javascript - Calculating the sum of input values by id
- c# - 如何等到使用 selenium webdriver 加载下拉列表?