我使用jquery从表单发布数据(通过jquery表单插件 - http://jquery.malsup.com/form/)
我能够收到的唯一回调(在“成功:”部分)是使用success的“html”:function(html){...}。
您是否只能根据html输出区分成功响应?
基本上我想要一些可以做到这一点的东西..
成功:函数(html,some_other_variable){
if(some_other_variable == 1){
//做点什么
}其他{
//做其他事情
}
}
我一直在这里读书:http://api.jquery.com/jQuery.post/ ..但没有运气
提前致谢, 菲尔
答案 0 :(得分:1)
如果我做对了,你实际上可以用你想要的任何参数发回json。不知道PHP中的语法是怎样的,但是在.NET MVC中你可以这样做。
Ajax调用
$.ajax({ dataType: 'json' ... });
返回结果
return Json(new {status = "your status", html = "your html"}, JsonRequestBehavior.AllowGet);
在你的成功回调函数中
success: function (response) {
if (response.status == 'success') {
var html = response.html;
// do something with html
} else {
// do something else
}
}
希望这有帮助!
答案 1 :(得分:0)
从服务器返回的数据是您在success方法中获得的数据。您可以返回包含所需状态var和所需标记的其他结构:
{
"status": 1,
"html": "<p>Test</p>"
}
并将dataType
选项设置为'json'。
或者您可以添加输出标头并从XHR对象中请求该标头。
答案 2 :(得分:0)
success
函数实际上响应了4个参数,responseText,statusText,xhr对象和jQuery包装的表单元素。 (documentation)
如果将dataType
设置为'json',则返回的响应将被解析为JSON。
假设您正在执行POST的页面以
响应{
success: true,
name: 'hello',
someothervalue: 'world'
}
你的代码是......
$('form').ajaxForm({
dataType: 'json',
success(response, status, xhr, form) {
alert(response.name);
}
});
在这种情况下,response
将填充json,您可以如图所示进行访问。
这里的诀窍是你需要表单POST的所有页面,以实际返回JSON响应。