Pio*_*otr 16 php ajax jquery json
我一直在寻找解决方案,但我找不到任何有效的方法.我试图从数据库中获取一堆数据,然后通过表单中的AJAX自动完成输入字段.为此,我决定使用json,因为为什么不呢,对吧?另外,我一直在考虑发回一个分隔的字符串,然后将它标记出来,在后视中它会更容易并且让我免于头疼......因为我已经决定使用json,我想我应该坚持下去,找出问题所在!发生的事情是,当执行get_member_function()时,警报对话框中会弹出一个错误,并显示"[object Object]".我也尝试过使用GET请求,并将contentType设置为"application/json; 字符集= UTF-8".唉,没有骰子.任何人都可以建议我做错了什么?小心,彼得.
我的javascript/jQuery函数如下:
function get_member_info()
{
var url = "contents/php_scripts/admin_scripts.php";
var id = $( "select[ name = member ] option:selected" ).val();
$.ajax(
{
type: "POST",
dataType: "json",
url: url,
data: { get_member: id },
success: function( response )
{
$( "input[ name = type ]:eq( " + response.type + " )" ).attr( "checked", "checked" );
$( "input[ name = name ]" ).val( response.name );
$( "input[ name = fname ]" ).val( response.fname );
$( "input[ name = lname ]" ).val( response.lname );
$( "input[ name = email ]" ).val( response.email );
$( "input[ name = phone ]" ).val( response.phone );
$( "input[ name = website ]" ).val( response.website );
$( "#admin_member_img" ).attr( "src", "images/member_images/" + response.image );
},
error: function( error )
{
alert( error );
}
} );
}
Run Code Online (Sandbox Code Playgroud)
"contents/php_scripts/admin_scripts.php"中的相关代码如下:
if( isset( $_POST[ "get_member" ] ) )
{
$member_id = $_POST[ "get_member" ];
$query = "select * from members where id = '$member_id'";
$result = mysql_query( $query );
$row = mysql_fetch_array( $result );
$type = $row[ "type" ];
$name = $row[ "name" ];
$fname = $row[ "fname" ];
$lname = $row[ "lname" ];
$email = $row[ "email" ];
$phone = $row[ "phone" ];
$website = $row[ "website" ];
$image = $row[ "image" ];
$json_arr = array( "type" => $type, "name" => $name, "fname" => $fname, "lname" => $lname, "email" => $email, "phone" => $phone, "website" => $website, "image" => $image );
echo json_encode( $json_arr );
}
Run Code Online (Sandbox Code Playgroud)
McH*_*bie 24
我想我知道这个......
尝试使用PHP的header()函数将JSON作为JSON发送:
/**
* Send as JSON
*/
header("Content-Type: application/json", true);
Run Code Online (Sandbox Code Playgroud)
虽然你传递的是有效的JSON,但jQuery的$ .ajax并不这么认为,因为它缺少标题.
jQuery曾经很好没有标题,但它改回了几个版本.
也
确保您的脚本返回有效的JSON.使用Firebug或Google Chrome的开发人员工具在控制台中检查请求的响应.
UPDATE
您还需要更新代码以清理$ _POST以避免sql注入攻击.以及提供一些错误捕获.
if (isset($_POST['get_member'])) {
$member_id = mysql_real_escape_string ($_POST["get_member"]);
$query = "SELECT * FROM `members` WHERE `id` = '" . $member_id . "';";
if ($result = mysql_query( $query )) {
$row = mysql_fetch_array($result);
$type = $row['type'];
$name = $row['name'];
$fname = $row['fname'];
$lname = $row['lname'];
$email = $row['email'];
$phone = $row['phone'];
$website = $row['website'];
$image = $row['image'];
/* JSON Row */
$json = array( "type" => $type, "name" => $name, "fname" => $fname, "lname" => $lname, "email" => $email, "phone" => $phone, "website" => $website, "image" => $image );
} else {
/* Your Query Failed, use mysql_error to report why */
$json = array('error' => 'MySQL Query Error');
}
/* Send as JSON */
header("Content-Type: application/json", true);
/* Return JSON */
echo json_encode($json);
/* Stop Execution */
exit;
}
Run Code Online (Sandbox Code Playgroud)
在获取数据时尝试使用jQuery.parseJSON.
type: "POST",
dataType: "json",
url: url,
data: { get_member: id },
success: function(data) {
response = jQuery.parseJSON(data);
$("input[ name = type ]:eq(" + response.type + " )")
.attr("checked", "checked");
$("input[ name = name ]").val( response.name);
$("input[ name = fname ]").val( response.fname);
$("input[ name = lname ]").val( response.lname);
$("input[ name = email ]").val( response.email);
$("input[ name = phone ]").val( response.phone);
$("input[ name = website ]").val( response.website);
$("#admin_member_img")
.attr("src", "images/member_images/" + response.image);
},
error: function(error) {
alert(error);
}
Run Code Online (Sandbox Code Playgroud)
该$.ajax error函数有三个参数,而不是一个:
error: function(xhr, status, thrown)
Run Code Online (Sandbox Code Playgroud)
你需要转储第二个和第三个参数来找到你的原因,而不是第一个.