【发布时间】:2026-02-01 21:30:01
【问题描述】:
我是 jQuery 开发的新手,我有一个问题,为什么我不能使用 dataType:'json' 或 $.parseJSON 来处理返回从 PHP 到 AJAX (jQuery) 的查询。
reader.js
$(function(){
//Modal form which encapsulates the loading of information occurs
var modal = $('.modal');
//Encapsulates the existing list or the list elements, each element has an "edit" button
var lista = $('.lista');
lista.on('click','.actionedit',function(){
var id = $(this).attr('href');
var li = lista.find('li[class*="j_'+id+'"]');
$.ajax({
url: 'php/controller.php',
data: 'acao=consulta&editid='+id,
type: 'POST',
//contentType: 'application/json; charset=utf-8;',
dataType: "json",
error: function (xhr, ajaxOptions, thrownError) {
alert('Erro: "'+ xhr.status + '"\nMensagem: " ' + thrownError +'"');
},
beforeSend: function(){
li.css("background","#0F6") },
success: function( carga ){
//alert( carga );
alert( carga.nome );
//modal.fadeIn("slow");
//modal.find('form span[class="filebar"]').text(carga.file);
//modal.find('form input[name="titulo"]').val(carga.title);
//modal.find('form textarea').append(carga.description;
},
complete: function(){ loader.fadeOut("slow"); },
});
return false;
});
});
controller.php
<?php
require_once("conexao.php");
switch($_POST['acao']){
case 'consulta':
//Validates query, that returns a json string...
$editid = $_POST['editid'];
$qr = "SELECT * FROM mod6_uploads WHERE id = '$editid'";
$ex = mysql_query($qr);
$st = mysql_fetch_array($ex);
//Return array in json format string for testing...
$u['file'] = 'File';
$u['title'] = 'File title';
$u['description'] = 'File Description';
echo json_encode($u);
break;
default:
echo 'Error querying';
}
因此,警报向我返回以下消息:
Error: "200"
Message: "SyntaxError: JSON.parse: unexpected character"
如果我注释 dataType:"json",它会返回以下警告:未定义
如果我将警报从“alert (carga.nome)”更改为“alert (load)”,它会返回以下内容:
{"name": "File", "title": "File Title", "description": "File Description"}
另外,正如我之前所说,如果我使用$.ParseJSON 或JSON.parse 没有任何返回,或者错误或者成功。
有人遇到过这样的事情吗? 如果有人可以帮助我,我将不胜感激!
【问题讨论】:
-
您在 php 中的哪个位置设置“名称”属性?还是你把它关掉了
-
你需要使用
dataType: "json"OR$.parseJSON,不能同时使用。完全按照您在问题中编写的方式应该可以正常工作。 -
您已经告诉 jquery 在响应中期待 JSON。如果您的服务器在您的实际 json 字符串之前或之后输出 ANYTHING else,那么您正在执行此警告 - JSON 语法非常严格,并且类似于 PHP 警告或其他“垃圾”之类的东西会导致json的jquery解码失败。确保没有 PHP 警告、unicode BOM 等正在输出。
-
如果您使用的是 Google Chrome,您可以按 F12,然后选择 Network 选项卡并查找当前请求,然后选择 Response 选项卡以查看服务器返回的确切内容。也许这些信息对你有用
-
@AlexW
$.ajax中的Content-type仅指浏览器发送的内容,而不是服务器返回的内容。
标签: javascript php jquery ajax json