通过AJAX、PHP和MySQL系统地更新页面
我试图根据用户输入系统地更新表“LUpdTbl”的innerhtml,但似乎无法解析最后返回的JSON数据。我保证我一直在研究这个问题,我确信这很简单,我只是没有看到它 大部分应用程序都是完整的,除了这一点,我真的想向我的最终用户介绍:用户将在页面上进行选择,这些选择应显示在下表的InHTML中,以便他们可以对数量等进行更改。不起作用的部分如下所示: ->SQL查询是根据用户和他们正在查看的工单系统地生成的通过AJAX、PHP和MySQL系统地更新页面,php,mysql,json,ajax,Php,Mysql,Json,Ajax,我试图根据用户输入系统地更新表“LUpdTbl”的innerhtml,但似乎无法解析最后返回的JSON数据。我保证我一直在研究这个问题,我确信这很简单,我只是没有看到它 大部分应用程序都是完整的,除了这一点,我真的想向我的最终用户介绍:用户将在页面上进行选择,这些选择应显示在下表的InHTML中,以便他们可以对数量等进行更改。不起作用的部分如下所示: ->SQL查询是根据用户和他们正在查看的工单系统地生成的 var LID = group + WO; //Values obtained from
var LID = group + WO; //Values obtained from another source
var SQL = "SELECT * FROM Table1 WHERE ID LIKE '" + LID + "%';";
->SQL语句被传递到SQLGet.php
$.ajax({ url: 'SQLGet.php',
type: 'post',
dataType: 'json',
data: {SQL: SQL},
success: function(data) {
result = JSON.stringify(data);
console.debug(result);
} });
->php返回一个JSON结果
$SQL = $_POST['SQL'];
try {
$result = $mysqli->query($SQL);
} catch(Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
$num_rows = $result->num_rows;
$rows = array();
while($row = $result->fetch_assoc()){
$rows[] = $row;
}
/*I started trying to recreate the multidimensional array before I use JSON.encode but that doesn't seem to make a difference*/
if ($num_rows > 0) {
//====================================================
// Store results to php variables
//====================================================
$LID = Array();
//...Rest of array removed for berevity
for($luN=0; $luN < $num_rows; $luN++){
$LID[$luN] = $rows[$luN]['ID'];
//... rest of array removed for berevity
}
for($al=0; $al < $num_rows; $al++){
$NLArray['ID'][$al] = $LID[$al];
//... rest of array removed for berevity
}
}
$post_data = json_encode(NLArray);
echo $post_data;
/*I also tried the following instead as well as other options that I've found*/
//echo 'var NLArray = '.json_encode($NLArray).';';
$SQL=$\u POST['SQL'];
试一试{
$result=$mysqli->query($SQL);
}捕获(例外$e){
回显“捕获的异常:”,$e->getMessage(),“\n”;
}
$num\u rows=$result->num\u rows;
$rows=array();
而($row=$result->fetch_assoc()){
$rows[]=$row;
}
/*在使用JSON.encode之前,我开始尝试重新创建多维数组,但这似乎没有什么区别*/
如果($num_rows>0){
//====================================================
//将结果存储到php变量
//====================================================
$LID=Array();
//…已移除阵列的其余部分以进行恢复
对于($luN=0;$luN<$num_行;$luN++){
$LID[$luN]=$rows[$luN]['ID'];
//…已移除阵列的其余部分以进行恢复
}
对于($al=0;$al<$num_行;$al++){
$NLArray['ID'][$al]=$LID[$al];
//…已移除阵列的其余部分以进行恢复
}
}
$post_data=json_编码(NLArray);
echo$post_数据;
/*我还尝试了以下方法以及我发现的其他方法*/
//echo“var NLArray=”.json_encode($NLArray);
最终,如果我能以可用的格式将结果返回到javascript,我可以更新innerhtml,但我要么得到一个不是数组的对象,要么得到一个意外的令牌错误。我尝试过$.map,但是我得到了一个看起来像函数的大字符串,但实际上没有类似于数组的字符串。这可能是因为您没有输出正确的内容类型。当您需要在服务器端执行ajax任务时,请尝试添加以下内容:
header('Content-Type: application/json');
此外,我认为您不需要JSON.stringify()调用,因为这会将JSON响应转换为字符串(如果要使用JSON对象,必须再次解析该字符串)您正在通过AJAX传递SQL语句并立即执行它们!没有检查,没有消毒,什么都没有!请告诉我这是什么网站,这样我就可以删除你所有的表格了,真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的真的很愚蠢的想法。而且,你在这里有一个解析错误:
$post\代码>,您忘记了$
<代码>$post\U data=json\U编码($NLArray)我以为会有人为此大喊大叫。我有一个清理它们的函数,我只是没有发布它,因为代码已经很长了。你可以像处理javascript中的任何对象一样处理json对象:使用点符号或方括号符号,比如PHP的数组。太棒了!谢谢Adelphia,我错过了变量上的$。因此,通过georaldc发布的标题('Content-Type…ect),我能够获得我正在寻找的数据的object-responseText。研究如何使用JSON对象,简单多了!非常感谢你们