支持AJAX的Web表单

时间:2011-12-05 10:22:32

标签: php jquery mysql ajax json

我是Jquery的新手,希望得到你们的帮助。

我想在jquery中解码json数据,因为我能够将数据从php传递到ajax但是在它回到jquery后它没有解析它说undefined。代码如下:

JavaSript文件

$.post("GetData.php", function(data) {
        if(data==false)
            var tpl = '<p>no record found<p>'
        else
            var tpl = DrawTableRowsforSection(data);
            $("#result").append($(tpl));
},"json");


function DrawTableRowsforSection(p)
{
    alert(p.id[0]);
    var o = '<table>';
    for (var i = 0; i < p.length; i++)
        alert(p.id[i]);
        o += '<tr><td>'+p.id[i]+'</td><td>'+p.section_name[i]+'<td></tr>';

        o+='</table>'
        return O;
}

PHP脚本

header('Content-Type: application/json');
mysql_connect('localhost','root','') ;
mysql_select_db('news');
session_start();

$query = 'select id,section_name from section';

if ($result = mysql_query($query)) {
    if (!mysql_num_rows($result)==null) {
        $myArray = array();
        while ($row = mysql_fetch_assoc($result)) {
            $id =  ToSring($row['id']);
            $myArray[] = $row;
        }

        echo json_encode($myArray);
    }
}

数据库有一个名为section的表 字段如下

id            int(11)
section_name  varchar(20)

那里共有5条记录。

我想要的是使用返回的数据填充表。 任何人都可以指导我犯错的地方

此致 Kashif Afzaal

2 个答案:

答案 0 :(得分:2)

确保mysql返回结果,你可以通过ajax获取它们。

另外,我看到了以下错误:

您使用的变量tpl错误。它只是一个js变量,不需要使用$。 使用这种方式:

 $("#result").append(tpl);

答案 1 :(得分:0)

好的,从PHP脚本的顶部开始:

  • MySQL扩展是古老而破旧的。使用MySQLiPDO
  • 您永远不会处理失败的MySQL查询,因此响应很可能是空的。在99%的情况下,任何if块都应该有相应的else块。
  • mysql_num_rows()的结果是从不 null。做if (mysql_num_rows($result) > 0),或者更好,仅if (mysql_num_rows($result))
  • 永远不要做if (!something == something) - 它很少做你想要的。做if (something != something)
  • 你永远不会处理mysql_num_rows()失败/没有行,所以(再次)响应很可能是空的。
  • 您永远不会对您创建的$id变量执行任何操作。
  • 我非常确定ToSring应该阅读ToString。但实际上PHP中没有这样的功能 - 您可以定义它或将其作为类/对象的方法调用。实际上,这可能是问题,因为它会导致致命的错误。