基于html / php输出的javascript回调,检索变量

时间:2011-04-05 13:44:16

标签: jquery ajax forms jquery-plugins post

我使用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/ ..但没有运气

提前致谢, 菲尔

3 个答案:

答案 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响应。