Jquery ajax调用:如何解析结果?

时间:2010-09-06 20:40:30

标签: json asp.net-mvc-2 jquery

我有一个模式对话框(通过jquery UI完成),它将表单提交给远程控制器Action。

这是名为:

的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调用期间编写代码来阻止表单元素?
  4. 我很抱歉,如果这个问题对你们大多数人来说似乎都很愚蠢,但我对ajax完全不熟悉,而且我正在努力学习一些我知道的经验模式。

    感谢您的回复

2 个答案:

答案 0 :(得分:1)

  

我的问题是:

     
      
  1. 为什么我在“成功”和“错误”块中设置了调试警报   不会被执行?
  2.   
  3. 如何在保持等待的同时编写代码来解析响应   在对话框上它?
  4.   
  5. 如何在ajax期间编写代码来阻止表单元素   调用
  6.   
  1. 如果您打算使用 ID ,那么您错过了指示符:

    $( “#fpForm”)

  2. 在通话中添加sync : true选项?

  3. 您可以:在表单元素 AFTER 上设置已禁用属性,或者使用元素屏蔽页面(可能是半透明的)转移输入。

答案 1 :(得分:1)

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

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

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

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