我正在尝试使用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 有什么想法吗?
答案 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/