0

在 mvc 中使用 Ajax 调用控制器操作时出错

请参阅我用来在控​​制器中调用方法的 ajax 函数

function ChangeEndDate(e) {

     $.ajax({
                type: "POST",
                url: "MonitoringSupplyOn/YourAction",
               contentType: "application/json; charset=utf-8",
                data:JSON.stringify({ 
                             id:e.value 
                            }),
                success: function (result) {
                    alert(result);
                },
                error: function (jqXHR, textStatus, errorThrown) {
                    alert("oops: " + textStatus + ": " + jqXHR.responseText);

                }
            });
}

控制器中的方法如下:

    [HttpPost]

    public ActionResult YourAction(string id)
    {
                    return Json(new { id = "succsess" });

    }

错误如下: 哎呀:错误:

<head>

    <title>Runtime Error</title>

    <style>

     body {font-family:"Verdana";font-weight:normal;font-size: .7em;color:black;} 

     p {font-family:"Verdana";font-weight:normal;color:black;margin-top: -5px}

     b {font-family:"Verdana";font-weight:bold;color:black;margin-top: -5px}

     H1 { font-family:"Verdana";font-weight:normal;font-size:18pt;color:red }

     H2 { font-family:"Verdana";font-weight:normal;font-size:14pt;color:maroon }

     pre {font-family:"Lucida Console";font-size: .9em}

     .marker {font-weight: bold; color: black;text-decoration: none;}

     .version {color: gray;}

     .error {margin-bottom: 10px;}

     .expandable { text-decoration:underline; font-weight:bold; color:navy; cursor:hand; }

    </style>

</head>



<body bgcolor="white">



        <span><H1>Server Error in '/RB.MONICA.Web' Application.<hr width=100% size=1 color=silver></H1>



        <h2> <i>Runtime Error</i> </h2></span>



        <font face="Arial, Helvetica, Geneva, SunSans-Regular, sans-serif ">



        <b> Description: </b>An application error occurred on the server. The current custom error settings for this application prevent the details of the application error from being viewed.

        <br><br>



        <b>Details:</b> To enable the details of this specific error message to be viewable on the local server machine, please create a &lt;customErrors&gt; tag within a &quot;web.config&quot; configuration file located in the root directory of the current web application. This &lt;customErrors&gt; tag should then have its &quot;mode&quot; attribute set to &quot;RemoteOnly&quot;. To enable the details to be viewable on remote machines, please set &quot;mode&quot; to &quot;Off&quot;.<br><br>



        <table width=100% bgcolor="#ffffcc">

           <tr>

              <td>


&lt;!-- Web.Config Configuration File --&gt;



&lt;configuration&gt;

    &lt;system.web&gt;

        &lt;customErrors mode=&quot;RemoteOnly&quot;/&gt;

    &lt;/system.web&gt;

&lt;/configuration&gt;



              </td>

           </tr>

        </table>



        <br>



        <b>Notes:</b> The current error page you are seeing can be replaced by a custom error page by modifying the &quot;defaultRedirect&quot; attribute of the application&#39;s &lt;customErrors&gt; configuration tag to point to a custom error page URL.<br><br>



        <table width=100% bgcolor="#ffffcc">

           <tr>

              <td>


&lt;!-- Web.Config Configuration File --&gt;

&lt;configuration&gt;

    &lt;system.web&gt;

        &lt;customErrors mode=&quot;On&quot; defaultRedirect=&quot;mycustompage.htm&quot;/&gt;

    &lt;/system.web&gt;



 &lt;/configuration&gt;



              </td>

           </tr>

        </table>



        <br>



</body>

</html>

我总是在这里收到错误消息。请告诉我哪里出错了。

哎呀:错误:

<head>

    <title>The HTTP verb POST used to access path '/RB.MONICA.Web/MONICA/MonitoringSupplyOn/MonitoringData/MonitoringSupplyOnController/YourAction' is not allowed.</title>

    <style>

     body {font-family:"Verdana";font-weight:normal;font-size: .7em;color:black;} 

     p {font-family:"Verdana";font-weight:normal;color:black;margin-top: -5px}

     b {font-family:"Verdana";font-weight:bold;color:black;margin-top: -5px}

     H1 { font-family:"Verdana";font-weight:normal;font-size:18pt;color:red }

     H2 { font-family:"Verdana";font-weight:normal;font-size:14pt;color:maroon }

     pre {font-family:"Lucida Console";font-size: .9em}

     .marker {font-weight: bold; color: black;text-decoration: none;}

     .version {color: gray;}

     .error {margin-bottom: 10px;}

     .expandable { text-decoration:underline; font-weight:bold; color:navy; cursor:hand; }

    </style>

</head>



<body bgcolor="white">



        <span><H1>Server Error in '/RB.MONICA.Web' Application.<hr width=100% size=1 color=silver></H1>



        <h2> <i>The HTTP verb POST used to access path '/RB.MONICA.Web/MONICA/MonitoringSupplyOn/MonitoringData/MonitoringSupplyOnController/YourAction' is not allowed.</i> </h2></span>



        <font face="Arial, Helvetica, Geneva, SunSans-Regular, sans-serif ">



        <b> Description: </b>An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.



        <br><br>



        <b> Exception Details: </b>System.Web.HttpException: The HTTP verb POST used to access path '/RB.MONICA.Web/MONICA/MonitoringSupplyOn/MonitoringData/MonitoringSupplyOnController/YourAction' is not allowed.<br><br>



        <b>Source Error:</b> <br><br>



        <table width=100% bgcolor="#ffffcc">

           <tr>

              <td>

                  <code>

在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。

              </td>

           </tr>

        </table>



        <br>



        <b>Stack Trace:</b> <br><br>



        <table width=100% bgcolor="#ffffcc">

           <tr>

              <td>

                  <code><pre>

[HttpException (0x80004005):不允许使用 HTTP 动词 POST 访问路径“/RB.MONICA.Web/MONICA/MonitoringSupplyOn/MonitoringData/MonitoringSupplyOnController/YourAction”。]

System.Web.DefaultHttpHandler.BeginProcessRequest(HttpContext 上下文,AsyncCallback 回调,对象状态)+4170038

System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +405

System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +375

              </td>

           </tr>

        </table>



        <br>



        <hr width=100% size=1 color=silver>



        <b>Version Information:</b>&nbsp;Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.272



        </font>



</body>

4

4 回答 4

1

请使用固定格式和 JsonRequestBehavior.AllowGet:

[HttpPost]
public JsonResult YourAction(string id)
{
       return Json(new { id = "succsess" }, JsonRequestBehavior.AllowGet);
}
于 2012-12-27T14:14:15.280 回答
0
Iam always getting the below error while calling the method in a controller from view:

oops: error: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title>IIS 7.5 Detailed Error - 404.0 - Not Found</title> 
<style type="text/css"> 
<!-- 
body{margin:0;font-size:.7em;font-family:Verdana,Arial,Helvetica,sans-serif;background:#CBE1EF;} 
code{margin:0;color:#006600;font-size:1.1em;font-weight:bold;} 
.config_source code{font-size:.8em;color:#000000;} 
pre{margin:0;font-size:1.4em;word-wrap:break-word;} 
ul,ol{margin:10px 0 10px 40px;} 
ul.first,ol.first{margin-top:5px;} 
fieldset{padding:0 15px 10px 15px;} 

.summary-container fieldset{padding-bottom:5px;margin-top:4px;} 
legend.no-expand-all{padding:2px 15px 4px 10px;margin:0 0 0 -12px;} 
legend{color:#333333;padding:4px 15px 4px 10px;margin:4px 0 8px -12px;_margin-top:0px; 
 border-top:1px solid #EDEDED;border-left:1px solid #EDEDED;border-right:1px solid #969696; 
 border-bottom:1px solid #969696;background:#E7ECF0;font-weight:bold;font-size:1em;} 
a:link,a:visited{color:#007EFF;font-weight:bold;} 
a:hover{text-decoration:none;} 
h1{font-size:2.4em;margin:0;color:#FFF;} 
h2{font-size:1.7em;margin:0;color:#CC0000;} 
h3{font-size:1.4em;margin:10px 0 0 0;color:#CC0000;} 
h4{font-size:1.2em;margin:10px 0 5px 0; 
}#header{width:96%;margin:0 0 0 0;padding:6px 2% 6px 2%;font-family:"trebuchet MS",Verdana,sans-serif; 
 color:#FFF;background-color:#5C87B2; 
}#content{margin:0 0 0 2%;position:relative;} 
.summary-container,.content-container{background:#FFF;width:96%;margin-top:8px;padding:10px;position:relative;} 
.config_source{background:#fff5c4;} 
.content-container p{margin:0 0 10px 0; 
}#details-left{width:35%;float:left;margin-right:2%; 
}#details-right{width:63%;float:left;overflow:hidden; 
}#server_version{width:96%;_height:1px;min-height:1px;margin:0 0 5px 0;padding:11px 2% 8px 2%;color:#FFFFFF; 
 background-color:#5A7FA5;border-bottom:1px solid #C1CFDD;border-top:1px solid #4A6C8E;font-weight:normal; 
 font-size:1em;color:#FFF;text-align:right; 
}#server_version p{margin:5px 0;} 
table{margin:4px 0 4px 0;width:100%;border:none;} 
td,th{vertical-align:top;padding:3px 0;text-align:left;font-weight:bold;border:none;} 
th{width:30%;text-align:right;padding-right:2%;font-weight:normal;} 
thead th{background-color:#ebebeb;width:25%; 
}#details-right th{width:20%;} 
table tr.alt td,table tr.alt th{background-color:#ebebeb;} 
.highlight-code{color:#CC0000;font-weight:bold;font-style:italic;} 
.clear{clear:both;} 
.preferred{padding:0 5px 2px 5px;font-weight:normal;background:#006633;color:#FFF;font-size:.8em;} 
--> 

</style> 

</head> 
<body> 
<div id="header"><h1>Server Error in Application "DEFAULT WEB SITE/RB.MONICA.WEB"</h1></div> 
<div id="server_version"><p>Internet Information Services 7.5</p></div> 
<div id="content"> 
<div class="content-container"> 
 <fieldset><legend>Error Summary</legend> 
  <h2>HTTP Error 404.0 - Not Found</h2> 
  <h3>The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.</h3> 
 </fieldset> 
</div> 
<div class="content-container"> 
 <fieldset><legend>Detailed Error Information</legend> 
  <div id="details-left"> 
   <table border="0" cellpadding="0" cellspacing="0"> 
    <tr class="alt"><th>Module</th><td>IIS Web Core</td></tr> 
    <tr><th>Notification</th><td>MapRequestHandler</td></tr> 
    <tr class="alt"><th>Handler</th><td>StaticFile</td></tr> 
    <tr><th>Error Code</th><td>0x80070002</td></tr> 

   </table> 
  </div> 
  <div id="details-right"> 
   <table border="0" cellpadding="0" cellspacing="0"> 
    <tr class="alt"><th>Requested URL</th><td>http://localhost:80/RB.MONICA.Web/MONICA/MonitoringSupplyOn/MonitoringData/@Url.Action(&quot;YourAction&quot;)?id=101</td></tr> 
    <tr><th>Physical Path</th><td>D:\TOMAS-MONICA\SourceCode\Application\WebServer\MONICA\MonitoringSupplyOn\MonitoringData\@Url.Action(&quot;YourAction&quot;)</td></tr> 
    <tr class="alt"><th>Logon Method</th><td>NTLM</td></tr> 
    <tr><th>Logon User</th><td>apac\rkv1cob</td></tr> 

   </table> 
   <div class="clear"></div> 
  </div> 
 </fieldset> 
</div> 
<div class="content-container"> 
 <fieldset><legend>Most likely causes:</legend> 
  <ul>  <li>The directory or file specified does not exist on the Web server.</li>  <li>The URL contains a typographical error.</li>    <li>A custom filter or module, such as URLScan, restricts access to the file.</li> </ul> 
 </fieldset> 
</div> 
<div class="content-container"> 
 <fieldset><legend>Things you can try:</legend> 
  <ul>  <li>Create the content on the Web server.</li>  <li>Review the browser URL.</li>    <li>Create a tracing rule to track failed requests for this HTTP status code and see which module is calling SetStatus. For more information about creating a tracing rule for failed requests, click <a href="http://go.microsoft.com/fwlink/?LinkID=66439">here</a>. </li> </ul> 
 </fieldset> 
</div> 


<div class="content-container"> 
 <fieldset><legend>Links and More Information</legend> 
  This error means that the file or directory does not exist on the server. Create the file or directory and try the request again. 
  <p><a href="http://go.microsoft.com/fwlink/?LinkID=62293&amp;IIS70Error=404,0,0x80070002,7601">View more information &raquo;</a></p> 

 </fieldset> 
</div> 
</div> 
</body> 
</html> 
于 2012-12-28T06:03:00.857 回答
0

您正在指定 json 数据类型,但您正在通过 JSON.stringify 传递具有 JSON 语法的字符串。另请注意,这是仅 Firefox 的功能。

尝试以下data参数

function ChangeEndDate(e) {

     $.ajax({
                type: "POST",
                url: "MonitoringSupplyOn/YourAction",
               contentType: "application/json; charset=utf-8",
                data: { id: e.value },
                success: function (result) {
                    alert(result);
                },
                error: function (jqXHR, textStatus, errorThrown) {
                    alert("oops: " + textStatus + ": " + jqXHR.responseText);

                }
            });
}
于 2012-12-27T14:01:35.273 回答
0

你可以试试这个修改后的代码:

$.ajax({ url: '@Url.Action("YourAction")',

        type: 'POST',

        data: { id: "101" },

        async: false,

        success: function (data) {

            alert(data);
        },

        error: function (jqXHR, textStatus, errorThrown) {
            alert("oops: " + textStatus + ": " + jqXHR.responseText);

        }
    });

并且在控制器中

public JsonResult YourAction(string id)
 {
      return Json(new { id = "succsess" });
 }
于 2012-12-27T14:08:59.380 回答