如何将 Ajax 调用的结果分配给变量?
我有一个下拉列表。 当用户做出选择时。我希望 ajax 调用 PHP 页面以从服务器查找相关数据并将其自动填充到输入字段中。
请参阅下面的代码
$(document).on('change','#dropdownchoiceid', function(){
$id = 1; // passing in some variable for php to use
$.ajax({
url: "../folder/getdata.php",
type: "POST",
data: {
'id' : $id
},
success:function(data){
$result = data;
console.log($result);
$('#inputid').val($result.column1);
$('#inputid2').val($result.column2);
}
});
php 正在工作。我得到的结果是这样的对象
array(1) {
[0]=>
object(stdClass)#5 (4) {
["id"]=>
string(1) "2"
["column1"]=>
string(7) "20.0000"
["column2"]=>
string(14) "someinfo"
["column3"]=>
string(1) "1"
}
所以我正在尝试使用从服务器获得的数据更改输入字段值。 但我在控制台中得到空白.log。我不太明白下面的代码。我试过了,因为我在堆栈溢出上看到了类似问题的答案
success:function(data){
$result = data;
}
PHP是
<?php
//Create class Object
$mProduct = new mProduct;
$id = $_POST['id'];
$result= $mProduct->getData($id);
模型 PHP 页面是
public function getData($id){
$this->db->query("
SELECT
*
FROM rebate
WHERE id= :id
");
//bind
$this->db->bind(':id', $id);
//Assign Result Set
$result = $this->db->resultset();
return $result;
}
我根据您的
var_dump硬编码了一个数组以匹配您的数据库方法返回的内容,在您的 PHP 页面中:
$arr=(object) [ "id"=> "2", "column1"=>"20.0000", "column2"=>"someinfo", column3"=>"1" ];
$arr=array($arr);
//var_dump($arr);
echo json_encode($arr, JSON_FORCE_OBJECT);
另外,我建议使用echo而不是print_r因为
print_r 还将显示使用 PHP 5 的对象的受保护和私有属性。 请参阅 PHP 手册 print_r
初始化您的$result变量,因为它是一个具有单个元素的数组您必须以这种方式引用它:
$.ajax({
url: "getData.php",
type: "POST",
data: {
'id' : $id
},
dataType: "json",
success:function(data){
var $result = data; // var initialize
console.log($result);
$('#inputid').val($result[0].column1); //$result is an array
$('#inputid2').val($result[0].column2);
},
error:function(data){
window.alert("Something went wrong"+data.error);
}
});
你问:(引用)...单词数据是否应该与我的 PHP 页面中的$result匹配?..数据是客户端上存储服务器响应的变量
为了在前端接收数据,PHP 页面必须打印一些东西,最好是 JSON 格式。试试这个:
<?php
//Create class Object
$mProduct = new mProduct;
$id = $_POST['id'];
$result= $mProduct->getData($id);
print_r(json_encode($result));
我正在回答我自己的问题。
从 php 数组获取数据 - AJAX - jQuery
检查上面的帖子后。 这是答案
所以最终的工作代码看起来像这样
$(document).on('change','#dropdownchoiceid', function(){
$id = 1; // passing in some variable for php to use
$.ajax({
url: "../folder/getdata.php",
type: "POST",
data: {
'id' : $id
},
datatype: "json",
success:function(data){
$result = data;
console.log($result);
$('#inputid').val($result.column1);
$('#inputid2').val($result.column2);
}
});
在 PHP 中
再添加一行
echo json_encode($result);