IT虾米网

asp.net mvc json打开对话框问题

iiiiii 2024年02月03日 程序员 233 0

 function postForm()   

{

 $.ajax({  
 
     type: "POST",   
 
     data: $("#myForm").serialize(),   
 
     dataType: "json", 
 
     url: '<%= Url.Action("JSONRequest","Home") %>', 
 
 
     success: function(result)   
     {   
         window.alert(result.name);   
     },                   
     error : function()   
     {   
         window.alert('error');   
     }   
 });   

}

 Html.BeginForm("JSONRequest", "Home", FormMethod.Post, new { id = "myForm" }); 
 Html.TextBox("mazhar")   
 <input type="submit" onclick="postForm" />   
 Html.EndForm(); 
 
 
 
 public ActionResult JSONRequest(FormCollection form) 
    { 
 
        string a = form["mazhar"]; 
        var data = new { name = "aaaa", Success = "Record is Succesfully Saved", ErrorMessages = "abc" }; 
        return Json(data);   
    } 

好的,问题是运行此代码后会打开对话框,要求保存文件。 有人可以告诉我如何解决这个问题吗?为什么最后会出现这个盒子?

请您参考如下方法:

您需要通过返回 false 取消默认表单提交按钮内onclick处理程序:

<input type="submit" onclick="postForm(); return false;" /> 

话虽这么说,我会建议你一个更好的解决方案。使用jquery.form插件使您能够ajaxify HTML 表单。这样可以简化代码中的大部分重复内容:

Html.BeginForm("JSONRequest", "Home", FormMethod.Post, new { id = "myForm" }); 
    Html.TextBox("mazhar")   
    <input type="submit" value="OK" />   
Html.EndForm(); 

在 JavaScript 中:

$(function() {  
    $('#myForm').ajaxForm({ 
        success: function(result) {   
            window.alert(result.name);   
        },                   
        error : function() {   
            window.alert('error');   
        }   
    });  
}); 

这样您就不再需要指定 url、方法、手动序列化表单字段等...您也不需要使用 JavaScript 函数污染您的 HTML 标记。这是不引人注目的 javascript。这种方法的另一个优点是,现在您将能够将此 javascript 外部化到单独的静态 .js 文件中,因为它不再依赖于服务器端代码 ( <%= Url.Action("JSONRequest","Home") %> ),并且您将受益于减少带宽和缓存静态资源.


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!