javascript - 使用 AJAX 将 PHP 数组返回到 JavaScript 文件
问题描述
作为这个问题的序言,我对 PHP 和 AJAX 有一个基本的了解。我被要求设计一个简单的表单,要求用户从两个汽车制造商中选择一个,这将从 data.php 文件中创建的多维数组中返回所选品牌的所有模型。到目前为止,这是我能够想出的:
索引.php
<body>
<form id="form">
<label for="make">
Make
<select name="make" id="make">
<option value="" selected="selected">None</option>
<option value="Ford">Ford</option>
<option value="BMW">BMW</option>
</select>
</label>
<input name="submit" value="Submit" type="submit" id="submit">
</form>
<h2>Models:</h2>
<div id="results"></div>
</body>
数据.php
<?php
$data = array(
array('make' => 'Ford', 'model' => 'Fiesta'),
array(''make' => 'Ford', 'model' => 'Focus'),
array('make' => 'Ford', 'model' => 'Mustang'),
array('make' => 'BMW', 'model' => '320'),
array('make' => 'BMW', 'model' => 'X3'),
array('make' => 'BMW', 'model' => 'X5'),
);
?>
ajax.php
<?php
require_once( 'data.php' );
$myJSON = json_encode($data);
echo $myJSON;
?>
函数.js
$(document).ready(function() {
"use strict"
console.log("Document loaded...");
$('#submit').click(function( event ) {
event.preventDefault();
console.log("Submit button was clicked");
run_ajax();
});
var run_ajax = function() {
var results = $( '#results' );
var formData = $( '#make' );
$.ajax({
type: 'get',
url: 'ajax.php',
data: formData,
dataType: 'json',
beforeSend: function() {
console.log("Before Send");
},
success: function( response ) {
console.log("Success");
},
});
var xmlhttp = new XMLHttpRequest();
var carModel;
xmlhttp.onreadystatechange = function() {
myObj = JSON.parse(this.responseText);
for (x in myObj) {
console.log("testing");
carModel += myObj[x].model + "<br>";
document.getElementById("results").innerHTML = carModel;
};
};
};
});
我能够让成功消息显示在控制台中,但我无法在 index.php 的“结果”div 中显示任何内容。有谁知道我哪里出错了?我搜索了相关主题,但找不到任何有关从本地文件中提取数据的信息。提前感谢您的任何帮助!
解决方案
现在可以了,谢谢大家的帮助!
function run_ajax(make) {
var results = $( '#results' );
var msg = "";
$.ajax({
type: 'get',
url: 'ajax.php',
data: make,
dataType: 'json',
beforeSend: function() {
console.log("Before Send");
},
success: function( response ) {
console.log("Success!");
for(var x in response) {
if(response[x].make == make) {
msg += response[x].model + "<br>";
}
}
if(msg == "") {
msg = "No matches found!";
}
document.getElementById("results").innerHTML = msg;
},
});
};
推荐阅读
- r - 一个for循环和一个子for循环,存储数据
- liquibase - 快照的 liquibase 差异 - 参数错误
- javascript - 即使在存储在 JS localStorage 中的页面刷新后,仍将数据保留在主页上
- excel - excel自动填充数字以获取特殊值
- laravel - SQLSTATE [HY000]:一般错误:1366 不正确的整数值:“null”在 Nullable 列上
- flutter - 在 TabBar Flutter 中删除选定栏下的淡入淡出
- .net - 使用 FluentFtp 上传文件时保留上次修改日期
- javascript - 如何从数组中删除特定元素
- python - Python post 请求仅在第一次工作
- ios - 传递变量时SwiftUI中的.sheet奇怪行为