我正在使用$ .post通过ajax将表单发送到PHP页面,该页面返回JSON数据。曾几何时,它工作得很好,功能(数据)正常执行。不知何故,我打破了它,现在它甚至没有触及功能(数据)。我已经尝试撤消我所做的大部分工作,但我仍然找不到问题。
这是脚本:
$("#modifyhome").submit(function(event) {
if($("#modifyhome").valid()) {
event.preventDefault();
var $form = $( this ),
title = $form.find('input[name="title"]').val(),
content = $form.find('textarea[name="content"]').val();
$.post("?action=page-accueil", {"title": title, "content": content},
function(data) {
if(data['error'] == 1)
{
$().message(data['message']);
$("div.jquery-message").effect("shake", {times: 3}, 900);
}
else if(data['error'] == 0)
{
$().message(data['message']);
$("div.jquery-message").effect("bounce", {times: 3}, 900);
}
else
{
$().message("Erreur de connexion au serveur : veuillez réessayer.");
$("div.jquery-message").effect("shake", {times: 3}, 900);
}
}, "json"
);
}
else
{
$("[id^=qtip-]").effect("pulsate", {times: 3}, 600);
return false;
}
});
以下是PHP页面(?action = page-accueil)返回的内容:
{"error":0,"message":"Page modifiée."}
所有都检出有效的JSON,但就好像jQuery由于某种原因无法识别它。非常感谢任何帮助:)
答案 0 :(得分:0)
你不清楚问题是什么。一开始你说
不知怎的,我已经破坏了它,现在它甚至没有触及功能(数据)
然后你说jQuery没有识别你的JSON,这意味着调用了回调函数。您需要测试流程的每个阶段以发现错误。在这种情况下,浏览器控制台是必须进行调试的。
测试用例:
服务器返回什么?如果不是
如果服务器正在返回某些内容但未正确解析它。
要测试任何一项,您熟悉浏览器控制台是至关重要的。 Chrome Network Panel或Firebug Net Tab
答案 1 :(得分:-1)
我曾经也遇到过这个问题,我完全不确定原因。但我有一个有效的解决方案。
$.post("?action=page-accueil",
{"title": title, "content": content},
function(data) {
data = eval("("+data+")");
//.... Then continue it
});
或者,如果您不想使用.parseJSON()
eval()
函数将字符串读取为JSON
$.post("?action=page-accueil",
{"title": title, "content": content},
function(data) {
data = $.parseJSON(data);
//.... Then continue it
});