在我的代码中,我返回一个包含7名学生记录的php数组。使用jquery ajax()我想在成功函数上打印这些记录。
数据库表学生
+---------------------------+
| name | fathername | Email |
+---------------------------+
submit.php
$query=mysql_query("SELECT * from Students LIMIT 0,6");
$row= array();
$row=mysql_fetch_array($query);
return json_encode($row);
的index.php
<script>
$(function(){
$("#form1").submit(function(event){
event.preventDefault();
$.ajax({
url:'submit.php',
type:'GET',
data:$(this).serialize(),
success:function(result){
$.each(result,function(){
$('.StudentName').text(result["name"]);
$('.FatherName').text(result["fathername"]);
$('.Email').text(result["email"]);
});
}
});
});
});
</script>
<div class="StudentName"></div>
<div class="FatherName"></div>
<div class="Email"></div>
修改 我试图从php中只返回1个结果,但它的工作原理就是。
echo json_encode(mysql_fetch_array($query));
当我返回所有6条记录时,jquery函数不会执行,即
while($result=mysql_fetch_array($query))
{
echo json_encode($result);
}
答案 0 :(得分:2)
PHP数组和JS数组之间有区别,你不能简单地将PHP数组传递给你的javascript,所以你应该先json_encode
将它发送给js。
这会将您的PHP数组转换为JSON数组,例如:
array(3) {
[0]=>
string(3) "foo"
[2]=>
string(3) "baz"
[3]=>
string(5) "blong"
}
到
string(33) "{"0":"foo","2":"baz","3":"blong"}"
所以试试 -
return json_encode($row);
然后当您收到回复时,请使用parseJSON:
result = jQuery.parseJSON(result);
$.each(result,function(){
$('.StudentName').text(result.name);
$('.FatherName').text(result.fathername);
$('.Email').text(result.email);
});
修改强>
另一件事,而不是return json_encode($row);
写echo json_encode($row);
修改2
(发送所有6条记录)
$final = array();
while($result=mysql_fetch_array($query))
{
array_push($final,$result);
}
echo $final;
答案 1 :(得分:1)
这可能会对你有帮助。
你的AJAX
$("#form1").click( function(e){
var Somename = { };
$.each($('#form1').serializeArray(), function() {
Somename [this.name] = this.value;
});
e.preventDefault();
$.ajax({
type: "GET",
url: "submit.php",
data: { upddt_empID: upddt_empID, somevariable: "YES" },
success: function(data) {
alert('Successfull');
}
});
你的PHP
if(isset( $_REQUEST['somevariable'] ) )
{
$selItem = YourFunctionName( $_REQUEST['Somename ']['here your textbox id'], $_REQUEST['Somename ']['here your textbox id'],'yourtablename');
}
您的查询
function YourFunctionName(tablename)
{
$qry = "SELECT * FROM $tablename";
$result = mysql_query($qry);
return $result;
}
答案 2 :(得分:0)
function success(result){ $.each(result,function(){ $('.StudentName').text(result["name"]);
看起来有问题。似乎没有理由循环result
,因为您将其所有内容分配给页面中的相同元素。
但是,假设result
是一个对象数组(比如SQL查询通常会产生它),那么它应该是
function(result){
$.each(result,function(obj) {
// missing parameter!!! ^^^
$('.StudentName').text(obj["name"]);
// access that here: ^^^
还可以执行console.log(result)
或只是浏览请求URL以检查PHP脚本是否产生预期的响应。
答案 3 :(得分:0)
以下是解析可能对您有帮助的JSON的示例 - http://jsfiddle.net/Su6QR/
考虑到这个例子,改变你的AJAX函数 -
$.ajax({
url:'submit.php',
type:'GET',
data:$(this).serialize(),
success:function(result){
var members = $.parseJSON(result);
$.each(members, function() {
var newStudent = '<span>' + this['name'] + '</span>';
var newFather = '<span>' + this['father'] + '</span>';
var newEmail = '<span>' + this['email'] + '</span>';
$('.StudentName').append(newStudent);
$('.FatherName').append(newFather);
$('.Email').append(newEmail);
});
}
});
这应返回所有数据并将它们放入您创建的div中。格式化不是你想要的,但你应该能够很容易地修复它。