gpt4 book ai didi

php - 错误 : parsererror using Jquery, AJAx 和 JSON

转载 作者:行者123 更新时间:2023-11-29 22:25:09 25 4
gpt4 key购买 nike

你能帮我解决这个问题吗:

我正在 php 中的搜索页面上工作,并尝试通过 Jquery-AJAX-JSON 从 mysql 表中检索一条特定记录,不方便的是我没有从 process.php(文件查询数据库)显示在buscador.php中,而不是我在firebug中遇到错误,如图所示

error

你能告诉我我的错误是什么吗,这是我的表单buscador.php

<html lang="es-ES">
<head>
<meta name="tipo_contenido" content="text/html;" http-equiv="content-type" charset="utf-8">
<link type="text/css" rel="stylesheet" href="content/estilos.css">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="javascript/jquery2.js" type="text/javascript"></script>

<title>BUSCADOR</title>
</head>
<form method="post" id="form_id" action="process2.php">
<fieldset>
<legend> Buscador Asincrono</legend>
<p>ID a buscar: <input type="text" name="ID_name" id="ID_id"/><div id="estado_id"></div></p>
<p><input type="submit" id="submit_id" value="Buscar"/></p>
<img src="imagenes/cargando.gif" id="LoadingImage" style="display:none" align="center"/>
<div id="ajax_id"><b>Person info will be listed here...</b></div>
<div id="msg">
<table id="infoemp" border="1" style="display:none" align="center">
<thead>
<th>ID</th>
<th>Nombre</th>
<th>Cargo</th>
</thead>
<tbody></tbody>
</table>
</div>
</fieldset>
</form>
</html>

这是我的 jquery2.js 文件

$(document).ready(function() {
$("#form_id").submit(function(e){
e.preventDefault();
preparar();
if(validaForm()){
requestInfo();
}
});
});

function preparar(){
$("#submit_id").hide();
$("#ajax_id").html("");
$("#LoadingImage").show();
$("#ajax_id").html("<div class='cargando'> realizando busqueda</div>");
}

function validaForm(){
var id_val = $("input#ID_id").val().trim();
if((id_val=="") || id_val.replace(/s+/,'') == ''){
alert("Favor ingrese el ID");
$("input#ID_id").addClass("posicionamiento");
$("#ajax_id").html("<div class='error'>Debe especificar el nombre</div>");
return false;
}else{
$("input#ID_id").removeClass("posicionamiento");
$("#div_id").empty();
}
return true;
}

function requestInfo(){

var url = $("#form_id").attr('action');
var data = $("#form_id").serialize();
var type = $("#form_id").attr('method');

$.ajax({
url:url,
data:data,
type:type,
cache: false,
contentType: "application/x-www-form-urlencoded",
dataType: 'json',
encode: true,
})

.done(function(data) {
if(data.success == "true"){
$("#ajax_id").html("");
//$("#ajax_id").html("<div class='cargando'>" +data.users.status+ "</div>");
$("#ajax_id").html("<div class='cargando'>" +data.info.total+ "</div>");
//$("#ajax_id").html(data.users.status).addClass("cargando");
$("#submit_id").show();
$("#LoadingImage").fadeOut();
$("#infoemp").show();

var output = "<h2>" +data.total+ " empleado encontrado</h2>";

output += '<ul>';
output += '<li>' + data.Nombre + ': ' + data.cargo + "</li>";
output += '</ul>';
$("#ajax_id").html(output);

} else { $("#ajax_id").html(data.success).addClass("cargando"); }
})

.fail(function( jqXHR, textStatus, errorThrown ) {
$("#LoadingImage").fadeOut();
$("#ajax_id").html(textStatus).addClass("cargando");
if ( console && console.log ) {
console.log( "La solicitud a fallado: " + textStatus);
}
});

}

这是我的 process2.php 文件

<?php

$bd = "ejemplo";
$server ="localhost";
$user = "root";
$password = "";

$errors = array(); // array para almacenar los errores
$data = array(); // array para devolver info

if (isset($_POST['Submit']) && isset($_POST['ID_name'])) {
$valor = filter_var($_POST['ID_name'], FILTER_SANITIZE_STRING);

if ($valor == null)
$errors['ID_name'] = 'Debe especificar el ID de busqueda.';
$data['success'] = false;
$data['errors'] = $errors;

} else {
obtenerEmpleados($valor);
}

function obtenerEmpleados( $valor ) {

$mysqli = @mysqli_connect($server, $user, $password, $bd);
if( ! $mysqli ) die( "Error de conexion ".mysqli_connect_error() );

if(!$prepared_st = $mysqli->prepare("SELECT * FROM empleado_php WHERE ID = ?")){
die("Error creando la consulta");
}

if(!$prepared_st->bind_param("s",$valor)){
die("Error vinculando parametro");
}

if(!$prepared_st->execute()){
die("Fallo en la ejecución");
}

$result = $prepared_st->get_result();
if($result->num_rows>0){
$data['success'] = true;
$data['total'] = sprintf("Se han encontrado %d usuarios", $result->num_rows);

$fila = $result->fetch_assoc();
$data['Nombre'] = $fila['Nombre'];
$data['cargo'] = $fila['cargo']
}

$prepared_st->close();
$mysqli->close();

header('Content-type: application/json; charset=utf-8');
echo json_encode($data);
}
?>

最佳答案

parsererror 消息来自 JSON 解析器,它在尝试解析的字符串中发现了错误。可能该字符串根本不是 JSON。

您还没有发布浏览器实际接收的字符串,但我怀疑正在发生这种情况:

您已在 PHP 代码的主体中定义了数据库连接变量,但尝试在此处的函数中使用它们:

function obtenerEmpleados( $valor ) {
$mysqli = @mysqli_connect($server, $user, $password, $bd);
if( ! $mysqli ) die( "Error de conexion ".mysqli_connect_error() );

变量超出范围,因此您的连接失败,并且您的脚本返回字符串Error de conexion...。这不是 JSON,但您的 Javascript 代码已被告知将其视为 JSON,因此您会在浏览器中看到解析错误。

您需要将连接变量作为参数传递到函数中,或者将它们声明为全局变量。

关于php - 错误 : parsererror using Jquery, AJAx 和 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30337399/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com