Php ajax返回未定义的、firebug响应中的控制台仅返回一行数据
嘿,伙计们,我正在尝试通过json_encode获取ajax的值,并使用$。每个值都会对每个结果进行迭代,但每个输入都会从我的php返回未定义的值。这里是ajaxPhp ajax返回未定义的、firebug响应中的控制台仅返回一行数据,php,ajax,Php,Ajax,嘿,伙计们,我正在尝试通过json_encode获取ajax的值,并使用$。每个值都会对每个结果进行迭代,但每个输入都会从我的php返回未定义的值。这里是ajax var counter_sub = 0 ; var html; $.ajax({ type:'POST', url:'add_subject.php', dataType:'json',
var counter_sub = 0 ;
var html;
$.ajax({
type:'POST',
url:'add_subject.php',
dataType:'json',
data:{'func_numbr':'2'},
success:function (data){
$.each(data, function(i, item) {
html = "<tr>";
html += "<td><lable>Subject: </label><input type='text' name='subject["+counter_sub+"]' value='"+data[i].subj_name+"'></td>";
html += "<td><input type='button' id='activate' name='active' class='button' value='Active'> ";
html += "<input type='button' id='inactivate' name='active' class='button' value='Inactive'></td>";
html += "</tr>";
$('#curr-elem-tble').append(html);
counter_sub = counter_sub +1;
});
}
});
还有php
<?php
include_once('DBconnect.php');
$func_num = $_POST['func_numbr'];
switch ($func_num) {
case 1:
insert_new_subject();
break;
case 2:
get_elementary_subjects();
break;
}
function insert_new_subject(){
$level = $_POST['year_level'];
$subjct_name =$_POST['subjct_name'];
$units_nmber = $_POST['subjct_units'];
$insert_subject = "INSERT INTO subjects (subject_name,level,status,subject_units) VALUES('$subjct_name','$level','1','$units_nmber')";
if(@!mysql_query($insert_subject)){
die('error insert'.mysql_error());
}
else{
$return ['error'] = false;
}
echo json_encode($return);
}
function get_elementary_subjects(){
$select_subjects_elem = "SELECT subject_name,subject_id,status FROM subjects WHERE level='elementary' ";
$connect = mysql_query($select_subjects_elem) or die(mysql_error());
$data[]=array();
while($row = mysql_fetch_array($connect)){
$data= array(
'subj_name' =>$row['subject_name'],
'subj_id'=>$row['subject_id'],
'subj_status'=>$row['status'],
);
}
echo json_encode($data);
}
?>
我将每个td切分为不同的html行,并使用+=对其进行concat,但仍然无法理解为什么它返回未定义。我用firebug检查了它,控制台只返回一行数据,尽管它迭代了所有结果。您只得到一行数据,因为在while循环中,您覆盖了整个数组,而不是附加到它。将数组声明更改为:
$data = array();
循环中的代码:
$data[] = array(
'subj_name' =>$row['subject_name'],
'subj_id'=>$row['subject_id'],
'subj_status'=>$row['status'],
);
试试这个代码
function get_elementary_subjects(){
$select_subjects_elem = "SELECT subject_name,subject_id,status FROM subjects WHERE level='elementary' ";
$connect = mysql_query($select_subjects_elem) or die(mysql_error());
$data = array(); //<---changed $data[] to $data
while($row = mysql_fetch_array($connect)){
//change $data to $data[]
$data[] = array(
'subj_name' =>$row['subject_name'],
'subj_id'=>$row['subject_id'],
'subj_status'=>$row['status'] //<---removed comma here
);
}
echo json_encode($data);
exit; //<---Added exit here
}
请参见我在上述代码中的注释,如果使用数据[i],那么使用i和item实现每个方法的意义是什么?您可以使用itemI开始理解为什么准备好的语句能够获得一个事实上的标准来转义值。。在写入MySQL之前,请转义您的用户输入