我是新手和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”,它会返回以下警告:undefined
如果我将警报更改为“alert(carga.nome)”至“alert(load)”,则会返回以下内容:
{"name": "File", "title": "File Title", "description": "File Description"}
另外,正如我之前所说,如果我使用$.ParseJSON
或JSON.parse
没有任何回报,或错误或成功。
那里的任何人都遇到过这样的事情? 如果有人能帮助我,我将非常感激!
答案 0 :(得分:1)
我改变了这一行:
data: 'acao=consulta&editid='+id,
由此:
data: {acao: 'consulta', editid: id},
由于你的id来自一个href,如果它被自动转义会更好。
此外,而不是:
echo 'Error querying';
类似的东西:
echo json_encode(array('Error querying'));
因此它不会给出JSON解析错误(以javascript错误数组的形式返回)。
另外,请确保您的mod6_uploads
表格中包含nome
字段。
我看到其余的都很好。
干杯
PS:我建议您使用开发工具进行调试。一个非常简单的是chrome,只需按F12,单击网络选项卡,然后运行ajax请求。
答案 1 :(得分:0)
如果使用dataType:'json'
,success
只有在服务器响应是有效JSON时才会触发回调。
因此,如果触发error
回调,则会使用使JSON无效的额外数据“填充”您的响应。
在这种情况下,请尝试发表评论dataType:'json'
并写入success
回调:
alert(carga)
或
console.log(carga)
这将输出服务器响应,您将能够看到它有什么问题。
此外,如果您希望使用JSON,请尝试在该文件中的任何位置使用JSON,并避免使用此类代码:
echo 'Error querying';
否则您可能会得到意想不到的结果