无法使用ajax填充表单并填充jquery插件

时间:2009-12-07 12:52:02

标签: php jquery-plugins jquery

我正在尝试使用jquery的populate插件填充表单,但使用$ .ajax

我的想法是根据链接中的id(链接:get_result_edit.php?id = 34)从我的数据库中检索数据,将其重新制作为json,将其返回到我的页面并填写表格populate插件。但不知怎的,我无法让它发挥作用。任何想法:

这是代码:

 $('a').click(function(){
     $('#updatediv').hide('slow');
     $.ajax({
      type: "GET",
      url: "get_result_edit.php",
      success: function(data)
               {
                                   var $response=$(data);
                                   $('#form1').populate($response);                                         
                               }
            });
     $('#updatediv').fadeIn('slow');
     return false;

虽然php文件如下:

<?php
$conn = new mysqli('localhost', 'XXXX', 'XXXXX', 'XXXXX');
@$query = 'Select * FROM news WHERE id ="'.$_GET['id'].'"';

$stmt = $conn->query($query) or die ($mysql->error());
if ($stmt) 
  { 

     $results = $stmt->fetch_object(); // get database data
    $json = json_encode($results); // convert to JSON format
      echo $json;

      }


?>

现在首先是mysql以这种方式返回null:在$ _GET部分声明sql语句有什么问题吗?其次,即使我提出了一个特定的记录,填充也不会填充。

更新

我使用名为“PHP jQuery helper functions”的填充库更改了填充库,不同之处在于它最后说了些什么。最后我得到一个错误,说没有这样的元素 我进入图书馆看看,然后是以下功能

function populateFormElement(form, name, value)
{
    // check that the named element exists in the form
    var name = name; // handle non-php naming
    var element = form[name];
    if(element == undefined)
    {
        debug('No such element as ' + name);
        return false;
    }

    // debug options                
    if(options.debug)
    {
        _populate.elements.push(element);
    }
}

现在看着它可以看出它应该打印出来的名字,但它不打印出来。所以我猜测从json检索名称不能正常工作。

链接位于http://www.ocdmonline.org/michael/edit_news.php,用户名为:Testing并传递:test123 有什么想法吗?

2 个答案:

答案 0 :(得分:0)

首先,您必须将.ajax调用的dataType选项设置为json:

$ .ajax({dataType:'json',...

然后在你的成功函数中,“data”参数已经是一个对象,所以你只需要使用它,不需要对它做任何事情(我不知道你为什么要将它转换为代码中的jQuery对象) )。

编辑:

$( 'a' ).click ( function () {
 $( '#updatediv' ).hide ( 'slow' );

 $.ajax ( {
  type: "GET",
  url: "get_result_edit.php",
  success: function ( data ) {
   $( '#form1' ).populate ( data );
  },
  dataType: 'json'
 } );

 $( '#updatediv' ).fadeIn ( 'slow' );
 return false;
}

还考虑使用$ .getJSON而不是$ .ajax,这样您就不必费心使用dataType

答案 1 :(得分:0)

尝试imPagePopulate(另一个jquery插件)。它可能更容易使用:

http://grasshopperpebbles.com/ajax/jquery-plugin-impagepopulate/