【问题标题】:Jquery .ajax POST function error return in asp.net MVC在asp.net MVC中返回Jquery .ajax POST函数错误
【发布时间】:2012-05-21 09:23:30
【问题描述】:

我有一个重定向到 Asp.net MVC 操作方法的 JavaScript 函数。

[AcceptVerbs(HttpVerbs.Post)]
    public ActionResult SupplierDetail(int SupplierID)
    {
        int test = SupplierID;
        return View();
    }

/// Java Script Code ...

$('#list .clsRowButtonClick').live('click', function () {
        var id = $(this).attr('RowID');
        var type = $(this).attr('ButtonType');
        alert("ID: " + id + " \nButtonType :" + type);

        var Supplier = {};
        Supplier.SupplierID = id;
        var jsonString = JSON.stringify(Supplier);

        $.ajax({
            type: "POST",
            url: "/Supplier/SupplierDetail/",
            dataType: "json",
            data: jsonString,
            contentType: "application/json; charset=utf-8",                
            success: function (response, textStatus, jqXHR) {
                alert("success");
            },
            error: function (jqXHR, textStatus, errorThrown) {
                //alert(jsonString);
                alert("jqXHR.responseText --> "+ jqXHR.responseText + "\njqXHR --> " + jqXHR + "\ntextStatus --> " + textStatus + " \nerrorThrown --> " + errorThrown);
            }
        });
    });

它按我的预期工作。它通过提供更正的参数值来触发SupplierDetail Action Method。

但是调用名为SupplierDetail的动作方法后引发错误是什么问题。

所以我使用javascript alert function跟踪代码。

jqXHR.responseText --> <!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>SupplierDetail</title>
<link href="/Content/themes/Redtheme/theme.css" rel="stylesheet" type="text/css" />
<link href="/Content/themes/Redtheme/style.css" rel="stylesheet" type="text/css" />
<script src="/Scripts/jquery-1.6.3.min.js" type="text/javascript"></script>
<script src="/Scripts/jquery-ui-1.8.11.js" type="text/javascript"></script>
<script src="/Scripts/modernizr-2.0.6-development-only.js" type="text/javascript">    </script>
<link href="/Scripts/jqgrid_utils/css/cupertino/jquery-ui-1.8.18.custom.css" rel="stylesheet" type="text/css" />
<link href="/Scripts/jqgrid_utils/css/ui.jqgrid.css" rel="stylesheet" type="text/css" />
<script src="/Scripts/jqgrid_utils/i18n/grid.locale-en.js" type="text/javascript"></script>
<script src="/Scripts/jqgrid_utils/grid.base.js" type="text/javascript"></script>
<script src="/Scripts/jqgrid_utils/grid.celledit.js" type="text/javascript"></script>
<script src="/Scripts/jqgrid_utils/grid.common.js" type="text/javascript"></script>
<script src="/Scripts/jqgrid_utils/grid.custom.js" type="text/javascript"></script>
<script src="/Scripts/jqgrid_utils/grid.filter.js" type="text/javascript"></script>
<script src="/Scripts/jqgrid_utils/grid.formedit.js" type="text/javascript"></script>
<script src="/Scripts/jqgrid_utils/grid.grouping.js" type="text/javascript"></script>
<script src="/Scripts/jqgrid_utils/grid.import.js" type="text/javascript"></script>
<script src="/Scripts/jqgrid_utils/grid.inlinedit.js" type="text/javascript">    </script>  
<script src="/Scripts/jqgrid_utils/grid.jqueryui.js" type="text/javascript"></script>
<script src="/Scripts/jqgrid_utils/grid.loader.js" type="text/javascript"></script>
<script src="/Scripts/jqgrid_utils/grid.subgrid.js" type="text/javascript"></script>
<script src="/Scripts/jqgrid_utils/grid.tbltogrid.js" type="text/javascript"></script>
<script src="/Scripts/jqgrid_utils/grid.treegrid.js" type="text/javascript"></script>
<script src="/Scripts/jqgrid_utils/jqDnR.js" type="text/javascript"></script>  
<script src="/Scripts/jqgrid_utils/jqModal.js" type="text/javascript"></script>
<script src="/Scripts/jqgrid_utils/jquery.fmatter.js" type="text/javascript"></script>
<script src="/Scripts/jqgrid_utils/JsonXml.js" type="text/javascript"></script>
<script src="/Scripts/jqgrid_utils/jquery.jqGrid.min.js" type="text/javascript">    </script>
</head>
<body>
<div id="container">
<div id="header">
    <div>
        <h2>POS 2012</h2>
    </div>
    <div id="topmenu">
        <ul>
            <li class="current"><a href="./MemberRegistration.jsp">Suppliers</a></li>
            <li><a href="./RetailerRegistration.jsp">Products</a></li>
            <li><a href="./Index.jsp">SupplierOrder</a></li>
            <li><a href="#">Contact us</a></li>
        </ul>
    </div>
</div>
<div id="wrapper">
<h2>SupplierDetail</h2>
<script src="/Scripts/jquery.validate.min.js" type="text/javascript"></script>
<script src="/Scripts/jquery.validate.unobtrusive.min.js" type="text/javascript">    </script>
<form action="/Supplier/SupplierDetail/" method="post">    <fieldset>
    <legend>Supplier</legend>
    <div class="editor-label">
        <label for="SupplierName">SupplierName</label>
    </div>
    <div class="editor-field">
        <input class="text-box single-line" id="SupplierName" name="SupplierName" type="text" value="" />
        <span class="field-validation-valid" data-valmsg-for="SupplierName" data-valmsg-replace="true"></span>
    </div>
    <div class="editor-label">
        <label for="Address">Address</label>
    </div>
    <div class="editor-field">
        <input class="text-box single-line" id="Address" name="Address" type="text" value="" />
        <span class="field-validation-valid" data-valmsg-for="Address" data-valmsg-replace="true"></span>
    </div>
    <div class="editor-label">
        <label for="Phone">Phone</label>
    </div>
    <div class="editor-field">
        <input class="text-box single-line" id="Phone" name="Phone" type="text" value="" />
        <span class="field-validation-valid" data-valmsg-for="Phone" data-valmsg-replace="true"></span>
    </div>
    <p>
        <input type="submit" value="Create" />
    </p>
</fieldset>
</form>
<div>
<a href="/">Back to List</a>
</div>
</div>
<div id="footer">
    <div id="credits">
        Copy right &copy; ....
    </div>
    <br />
</div>
</div>
</body>
</html>
jqXHR --> [object Object]
textStatus --> parsererror 
errorThrown --> SyntaxError: JSON.parse: unexpected character

我们将不胜感激。

【问题讨论】:

    标签: javascript jquery asp.net-mvc json


    【解决方案1】:

    看起来您期待来自服务器的 HTML 响应 - 因此您需要将 dataType 选项的值更改为“html”,(或完全删除它)。

    【讨论】:

      【解决方案2】:
      [HttpPost]
      public JsonResult SupplierDetailTest(int SupplierID)
      {
          int test = SupplierID;
          return Json(true, JsonRequestBehavior.AllowGet);
      }
      
      
      $(document).ready(function () {
          $('#list .clsRowButtonClick').live('click', function () {
              var SupplierID = $(this).attr('RowID');
      
              $.ajax({
                  url: "/Supplier/SupplierDetailTest/", type: "POST", dataType: "json",
                  data: { SupplierID: SupplierID },
                  //contentType: "application/json; charset=utf-8",
                  success: function (data) {
                      alert("success");
                  },
                  error: function (jqXHR, textStatus, errorThrown) {
                      alert("jqXHR.responseText --> " + jqXHR.responseText + "\njqXHR --> " + jqXHR + "\ntextStatus --> " + textStatus + " \nerrorThrown --> " + errorThrown);
                  }
              });
          });
      });
      

      【讨论】:

        猜你喜欢
        • 2016-01-07
        • 1970-01-01
        • 1970-01-01
        • 2015-11-27
        • 1970-01-01
        • 2013-12-19
        • 1970-01-01
        • 2015-02-03
        相关资源
        最近更新 更多