2010-09-06 83 views
0

我有一个模式对话框(通过jQuery UI完成),将窗体提交给远程控制器Action。jquery ajax调用:如何解析结果?

这就是所谓的jQuery函数:

$("fpForm").submit(function() { 
    $.ajax({ 
     type: "POST", 
     url: "ForgotPassword", 
     data: $("#fpForm").serialize(), 
     success: function(response) { 
      alert(response); 
     }, 
     error: function(response) { 
      alert(response); 
     } 
    }); 
}); 

行动确实对一些数据验证,然后发回一个JSON格式的响应。比方说,例如,这是一个示例响应:

{"result":"NOK","message":"The user is not registered on the system"} 

我的问题是:

  1. 为什么我在“成功”和“错误”块已设置调试警报不被执行?
  2. 如何编写我的代码来解析响应,同时保持在对话框中等待它?
  3. 如何在ajax调用期间编写代码来阻止表单元素?

如果对于大多数人来说这个问题看起来很愚蠢,但我对ajax完全陌生,我正在尝试学习一些我知道的有经验的模式。

谢谢您的回复

+1

http://stackoverflow.com/questions/1637334/iterating-through-parsing-json-object-via-javascript发布在stackoverflow上的很多问题,这里会给你一些指导 – 2010-09-06 20:49:43

回答

1

第一个错误是使用$("fpForm").submit而不是$("#fpForm").submit

如果服务器返回JSON数据(例如JsonResult),则应该包含dataType: "json"以将结果转换为对象中的对象。在此之后可以更换alert(response);

alert('Result: ' + response.result + ', Message: ' + response.message); 

要阻止表单元素,我会建议你使用jQuery BlockUI Plugin。在demos你会发现不同的使用例子,并找到你喜欢的方式。

+0

呃......你对第一个错误是正确的,但表单也被提交了!无论如何,谢谢你的回答! – Lorenzo 2010-09-06 21:28:07

+0

我已经包含了你的建议,但第一个错误仍然存​​在。我还在呼叫中添加了“同步:真”选项,但我被重定向到仅包含json响应的另一个屏幕! – Lorenzo 2010-09-06 21:42:35

+0

我认为如果需要的话,你不需要使用'sync:true'。你的程序也应该没有'sync:true'。它现在还没有工作,错误不是固定的。 “第一个错误”是什么意思?将数据发送到服务器?将数据以代码或工作标准格式“提交”发送?你可以在'$ .ajax'调用之前插入'alert(“之前的$ .ajax”);''。您可以使用Fiddler(请参阅http://www.fiddler2.com/fiddler2/)或Firebug验证数据是否真正发送和接收。 – Oleg 2010-09-06 21:57:17

1

我的问题是:

  1. 为什么“错误”块 不被得到执行,我在“成功”,并设置调试警报?
  2. 我该如何编写我的代码来解析响应,同时在对话框中继续等待 ?
  3. 如何在ajax 调用期间编写代码以阻止表单元素?
  1. 如果你的意思是使用ID那么你错过了代号:

    $( “#fpForm”)

  2. 添加sync : true选项上电话?

  3. 你既可以:设置在窗体部件的禁用属性 AFTER张贴请求,或者与一个元件(可能半透明)屏蔽页面转移的输入。

+0

非常感谢你!我已经包括你的建议但第一个错误仍然存​​在。我还在呼叫中添加了“同步:真”选项,但我被重定向到仅包含json响应的另一个屏幕! – Lorenzo 2010-09-06 21:43:11