Javascript 使用$.post将基本JSON发送到php,并带有回调
我的问题基本上是,我无法理解正确的语法(以前从未使用过JSON),无论是在js还是PHP方面,但我认为一旦我理解了js,我就可以自己理解PHP方面的内容 逻辑目标:发送存储变量id#和常量字符串“del”的JSON数据,接收包含成功/错误信息的JSON数据,然后根据成功/错误,将结果回送到不同的html中我最感兴趣的是学习发送和处理接收到的json的javascript代码,我认为PHP处理应该更简单,我自己就能理解(希望如此) 编辑——当我说成功/错误时,我希望在PHP代码中确定,而不是真正的硬错误。因此,最好将其看作jQuery回调函数部分中的Javascript 使用$.post将基本JSON发送到php,并带有回调,javascript,php,jquery,json,Javascript,Php,Jquery,Json,我的问题基本上是,我无法理解正确的语法(以前从未使用过JSON),无论是在js还是PHP方面,但我认为一旦我理解了js,我就可以自己理解PHP方面的内容 逻辑目标:发送存储变量id#和常量字符串“del”的JSON数据,接收包含成功/错误信息的JSON数据,然后根据成功/错误,将结果回送到不同的html中我最感兴趣的是学习发送和处理接收到的json的javascript代码,我认为PHP处理应该更简单,我自己就能理解(希望如此) 编辑——当我说成功/错误时,我希望在PHP代码中确定,而不是真正的
if
语句
$(".admin_ru_delete_button").click(function() { //this code is not working
id = ($(this).attr("id"));
dataJson = { "id":id, "type":"del" };
$.post(
'ajax/justPosted_AJAX.php',
dataJson,
function(data){
//$("#admin_errors").html('');
//$("#admin_success").html('');
}
, "json");
return false;
});
非常感谢您的时间/帮助 数据从javascript对象转换为POST变量-JSON与此无关(除了PHP->JS部分) 在您的回调中(该回调自动转换为对象,正如您指定的内容类型“json”): 如果希望在未返回JSON时出错,可以使用
$.ajax
:
$.ajax(
'ajax/justPosted_AJAX.php',
{
dataType: 'json',
data: dataJson,
success: function(data){
if (data.success) {
alert('Yay! The ID I sent was ' + data.id);
} else {
alert(data.error);
}
},
error: function(jqXHR, textStatus, errorThrown) {
alert('The AJAX call failed: ' + textStatus + ' / ' + errorThrown);
}
}
);
您可以尝试:
Javascript
$(".admin_ru_delete_button").click(function() {
id = ($(this).attr("id"));
$.ajax(
type: "POST",
dataType: "JSON",
url: 'ajax/justPosted_AJAX.php',
data: { "id":id, "type":"del" },
success: function(data){
$("#admin_success").html(data[1] +" "+ data[2]);
}
error: function(data){
console.Log("Error in ajax");
});
return false;
});
这是假设您使用
json\u encode($array)
从PHP返回JSONObject/JSONArray,他说:“我最感兴趣的是学习发送和处理接收到的json的javascript代码”@WayneWhitty,但他补充说,他不知道确切的PHP,但认为可能必须对其进行json解码,事实并非如此。我已经添加了一个关于如何处理来自PHP和JSON的JSON的描述。感谢您提供的PHP/JS代码,我相信这会为我节省一些时间。此时,主要的问题仍然是我的js$.post
代码没有正确地/根本没有将数据发送到PHP文件。@HC_u为什么您认为它没有正确地发送数据?数据包检查器(如Firebug/Chrome的开发者工具/Fiddler2)告诉您它发送了什么?@H2Ooooo Chrome在控制台中没有说任何内容><这就是我来这里的主要原因:没有错误报告。根据文档,在$.post
调用中定义的函数是一个成功处理程序,如果PHP返回的文档没有错误代码,则会调用该函数。如果您想使用HTTP状态来控制成功/失败,那么文档中有关于失败处理程序的更多信息,否则,成功处理程序中的数据
可以是类似于{“errState”:false,“somekey”:{…}
的JSON文档,然后您可以使用数据[“errState”]在成功处理程序中进行检查
。在Firebug网络面板或Webkit网络面板中检查响应!我知道这听起来很明显,但是。。。你把jQuery导入网页了吗?嗯。。哦,是的,我写得很匆忙。谢谢你的轻推。如果他想处理成功
和错误
,他应该使用一个简单的$.ajax调用。
$.ajax(
'ajax/justPosted_AJAX.php',
{
dataType: 'json',
data: dataJson,
success: function(data){
if (data.success) {
alert('Yay! The ID I sent was ' + data.id);
} else {
alert(data.error);
}
},
error: function(jqXHR, textStatus, errorThrown) {
alert('The AJAX call failed: ' + textStatus + ' / ' + errorThrown);
}
}
);
$(".admin_ru_delete_button").click(function() {
id = ($(this).attr("id"));
$.ajax(
type: "POST",
dataType: "JSON",
url: 'ajax/justPosted_AJAX.php',
data: { "id":id, "type":"del" },
success: function(data){
$("#admin_success").html(data[1] +" "+ data[2]);
}
error: function(data){
console.Log("Error in ajax");
});
return false;
});