Ajax / PHP:如何在 Ajax 和 PHP 之间传递和接收数组(代码部分工作)
Ajax / PHP: How to pass and receive array between Ajax and PHP (code partially working)
我是 Ajax 和 PHP 的新手,希望有人能帮助我。
我需要在 jQuery 中生成一个具有唯一 ID 的数组,将其传递给 PHP 页面并 return 来自 PHP 页面的相应值。
到目前为止,我有以下代码在 jQuery 端工作,因此第一个 console.log
正确记录输入数组,例如["1", "2", "3", "4", "5"]
。
但是,我没有从 PHP 页面获得任何结果,第二个 console.log
没有为输出数组记录任何内容,所以我想我在那里遗漏了一个或多个东西。
结果应该是一个关联数组,其中列出了每个项目及其 tID 和 MySQL 查询 中的相应值,如 "tID" => "1", "value" => "value1"
...。
有人可以帮我解决这个问题吗?
JS端:
function getValues(languageFrm){
var values = [],
tID;
$('.valuesDynamic').find('.values').each(function(){
tID = $(this).attr('name').replace('tID', '');
if($.inArray(tID, values) === -1){
values.push(tID);
}
});
values.sort();
console.log(values);
$.ajax({
type: "post",
url: "ajax.php",
cache: "false",
data: {
node: 'fetchValues',
values: values,
languageFrm: languageFrm
},
success: function(data){
console.log(data);
}
});
}
PHP 边:
case "fetchValues":
$values = $_POST["values"];
$languageFrm = $_POST["languageFrm"];
$stmt = $conn->prepare("SELECT tID, " . $languageFrm . " FROM main WHERE tID IN(?) ORDER BY tID");
$stmt->bind_param("s", implode(",", $values));
$stmt->execute();
$result = $stmt->get_result();
while($arrValues = $result->fetch_assoc()){
$result[] = array("tID" => $arrValues["tID"], "value" => $arrValues[$languageFrm]);
}
echo $result;
break;
非常感谢您的帮助。
您可以 JSON 对数组进行编码,然后 JSON 在 PHP 端进行解码。
对于您的 JS 端,您可以将数据部分替换为:
data: {
node: 'fetchValues',
values: JSON.stringify(values),
languageFrm: languageFrm
},
为 PHP。而不是 $values = $_POST["values"]
,你会这样做:
$values = json_decode($_POST["values"]);
我相信你的PHP SIDE
应该是
case "fetchValues":
$values = implode(",", $_POST["values"]);
$languageFrm = $_POST["languageFrm"];
$stmt = $conn->prepare("SELECT tID, " . $languageFrm . " FROM main WHERE tID IN($values) ORDER BY tID");
$stmt->execute();
$result = $stmt->get_result();
while($arrValues = $result->fetch_assoc()){
$result[] = array("tID" => $arrValues["tID"], "value" => $arrValues[$languageFrm]);
}
echo $result;
break;
换句话说,您必须将 $values
直接放入您的查询中
JS 端
data: {
node: 'fetchValues',
values: $.extend({},values),
languageFrm: languageFrm
},
PHP边
$result
是一个数组。所以用 print_r($result);
替换 echo $result;
我是 Ajax 和 PHP 的新手,希望有人能帮助我。
我需要在 jQuery 中生成一个具有唯一 ID 的数组,将其传递给 PHP 页面并 return 来自 PHP 页面的相应值。
到目前为止,我有以下代码在 jQuery 端工作,因此第一个 console.log
正确记录输入数组,例如["1", "2", "3", "4", "5"]
。
但是,我没有从 PHP 页面获得任何结果,第二个 console.log
没有为输出数组记录任何内容,所以我想我在那里遗漏了一个或多个东西。
结果应该是一个关联数组,其中列出了每个项目及其 tID 和 MySQL 查询 中的相应值,如 "tID" => "1", "value" => "value1"
...。
有人可以帮我解决这个问题吗?
JS端:
function getValues(languageFrm){
var values = [],
tID;
$('.valuesDynamic').find('.values').each(function(){
tID = $(this).attr('name').replace('tID', '');
if($.inArray(tID, values) === -1){
values.push(tID);
}
});
values.sort();
console.log(values);
$.ajax({
type: "post",
url: "ajax.php",
cache: "false",
data: {
node: 'fetchValues',
values: values,
languageFrm: languageFrm
},
success: function(data){
console.log(data);
}
});
}
PHP 边:
case "fetchValues":
$values = $_POST["values"];
$languageFrm = $_POST["languageFrm"];
$stmt = $conn->prepare("SELECT tID, " . $languageFrm . " FROM main WHERE tID IN(?) ORDER BY tID");
$stmt->bind_param("s", implode(",", $values));
$stmt->execute();
$result = $stmt->get_result();
while($arrValues = $result->fetch_assoc()){
$result[] = array("tID" => $arrValues["tID"], "value" => $arrValues[$languageFrm]);
}
echo $result;
break;
非常感谢您的帮助。
您可以 JSON 对数组进行编码,然后 JSON 在 PHP 端进行解码。
对于您的 JS 端,您可以将数据部分替换为:
data: {
node: 'fetchValues',
values: JSON.stringify(values),
languageFrm: languageFrm
},
为 PHP。而不是 $values = $_POST["values"]
,你会这样做:
$values = json_decode($_POST["values"]);
我相信你的PHP SIDE
应该是
case "fetchValues":
$values = implode(",", $_POST["values"]);
$languageFrm = $_POST["languageFrm"];
$stmt = $conn->prepare("SELECT tID, " . $languageFrm . " FROM main WHERE tID IN($values) ORDER BY tID");
$stmt->execute();
$result = $stmt->get_result();
while($arrValues = $result->fetch_assoc()){
$result[] = array("tID" => $arrValues["tID"], "value" => $arrValues[$languageFrm]);
}
echo $result;
break;
换句话说,您必须将 $values
直接放入您的查询中
JS 端
data: {
node: 'fetchValues',
values: $.extend({},values),
languageFrm: languageFrm
},
PHP边
$result
是一个数组。所以用 print_r($result);
echo $result;