我是新来的,jQuery开发,我有一个问题,为什么我不能使用dataType:'json'也不$. parseJSON来处理从PHP到AJAX(jQuery)的返回查询。
读者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;
});
});
控制器。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"
如果我注释数据类型:“json”,它将返回以下警告:未定义
如果我将警报更改为警报(carga.nome)到警报(加载),它会返回以下内容:
{"name": "File", "title": "File Title", "description": "File Description"}
另外,正如我前面所说的,如果我使用$。ParseJSON
或JSON. parse没有任何返回,或错误或成功。
有人遇到过这样的事情吗?如果有人能帮助我,我将非常感激!
如果使用dataType:'json'
,success
回调将仅在服务器响应是有效的json时触发。因此,如果触发了error
回调,您的响应将“填充”额外的数据,从而使JSON无效。在这种情况下,尝试注释数据类型:'json'
,并在成功
回调中写入:
alert(carga)
或
console.log(carga)
这将输出服务器响应,您将能够看到它有什么问题。
此外,如果您决定使用JSON,请尝试在该文件中的任何地方使用JSON,并避免使用此类代码:
echo 'Error querying';
否则你可能会得到意想不到的结果
我想换一行:
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请求。
问题内容: 我知道可以将AJAX请求发送到页面。而且我还知道页面通过Web方法处理AJAX请求。 是否还可以将AJAX请求发送到页面?如果是这样,页面是否还通过Web方法处理AJAX请求?请注意,我想从页面返回JSON响应。这可能吗? 问题答案: 您可以在页面的代码后面定义Web方法,然后调用它们: 然后,在您的jQuery代码中调用Web方法: 这是一个很好的入门指南。
问题内容: 我仍然在努力摆脱JQUERY,AJAX和PHP的束缚。 我现在可以调用PHP OK,处理表单元素并发送电子邮件,但是我不处理返回AJAX的问题。我总是激活选择器,当我尝试列出返回的JSON时,我得到了信息,这显然是错误的。 PHP具有假定的JSON返回 Javascript和AJAX 假定的JSON数据清单 如果有人能建议我犯了什么愚蠢的错误,那么我将不胜感激。 问题答案: 您可以通过
问题内容: 我想以json格式向php发送一些数据,并在php中进行一些操作。我的问题是我无法通过Ajax将json数据发送到我的php文件。请帮助我该怎么做。我已经尝试过这种方式.. 在PHP中,我使用: 在php文件中添加print_r($ _ POST)时,它在firebug中显示array(0){}。 问题答案: 输了。您没有将JSON发送到服务器,而是发送了普通的POST查询(恰好包含J
问题内容: 有人可以简单地说明如何使jQuery发送实际的JSON而不是查询字符串吗? 实际上,这会将您精心准备的JSON转换为查询字符串。令人讨厌的事情之一是,对象中的任何内容都将转换为,这可能是由于查询字符串的限制所致。 问题答案: 您需要使用,首先将您的对象序列化为JSON,然后指定,以便您的服务器理解为JSON。这应该可以解决问题: 请注意,该对象在支持JavaScript 1.7 / E
问题内容: 我正在尝试使用以下方法将json数据从客户端发送到我的服务器: 我得到一个。但是,当我使用json对象时会被发送。 它仅对PATCH不起作用 后端是Django,即时通讯使用的应用程序是tastypie 问题答案: 首先,检查您是否使用了最新版本的jQuery库: 旧版本直接限制未知方法(PATCH是新方法)。 我已经在jQuery 1.7上进行过测试-PATCH方法可以正常工作。 其
问题内容: 我是AJAX的新手,并且对PHP传递回jQuery感到困惑。因此,您具有如下的AJAX函数: (我从ajax的另一个StackOverflow页面上获得了此信息。) 但是在其他各种资源上,他们将拥有成功部分,如下所示: 我只是困惑于是什么决定了这个变量的命名?如果PHP最终回显了一个数组: 我如何从AJAX获得此信息? 问题答案: Ajax- Requests获取整个站点。因此,您不会