//更新:
我已经发现Ajax脚本有效,并且问题很可能出在以下行:
“ url:'/ Home / GetRates',//请求的URL”
使用调试器,我发现GetRates()函数不是在远程服务器中被调用,尽管它在本地(在VS 2013下)开发服务器中。我看到的唯一区别是路径,但不知道如何解决。
下面是Ajax脚本:
// Retrieve rates and update partial view
$(function () {
$('#reservSearch').submit(function () {
if ($(this).valid()) {
$("#theModal").modal("show"); // Display the in progress.....
$.ajax({
url: '/Home/GetRates', // URL for the request
data: $("#reservSearch").serialize(), // the data to send (will be converted to a query string)
type: "POST", // whether this is a POST or GET request
dataType: 'html', // the type of data we expect back
success: function (data) { // code to run if the request succeeds; The response is passed to the function
$("#theModal").modal("hide"); // Close the in progress modal.....
$('#ratesView').html(data); // Fill div with results
},
error: function (xhr, status) { // code to run if the request fails; the raw request and status codes are passed to the function
$("#theModal").modal("hide"); // Close the in progress modal.....
alert('Error: Retrieving parking rates' + "</br>" + xhr.error);
}
});
}
// // it is important to return false in order to cancel the default submission of the form and perform the AJAX call
return false;
});
});
//第二更新
按照注释部分的说明进行操作之后,这是来自ajax调用的响应:
<div id="header"><h1>Server Error in Application "DEFAULT WEB SITE"</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/Home/GetRates</td></tr>
<tr><th>Physical Path</th><td>C:\inetpub\wwwroot\Home\GetRates</td></tr>
<tr class="alt"><th>Logon Method</th><td>Anonymous</td></tr>
<tr><th>Logon User</th><td>Anonymous</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&IIS70Error=404,0,0x80070002,7601">View more information »</a></p>
</fieldset>
</div>
</div>
</body>
</html>
#1 楼
如何调试AJAX调用完整的答案分散在关于OP问题的评论中,但是我认为这一点最有帮助:
转到转到进行AJAX调用的网页
在Chrome中按F12
转到“网络”选项卡
通过提交表单#reservSearch
激活AJAX调用在“网络”选项卡中查找调用/ Home / GetRates
单击它
检查“预览”和“响应”选项卡以查看服务器的输出
是否显示您的AJAX呼叫正在侦听的预期HTML数据? br />
评论
@PetrosP-Mac没有Alt键。我认为您的意思是Command + Option + J。
–伊桑·艾伦(Ethan Allen)
17年9月20日在20:28
@EthanAllen Alt和Option-一样。 zh.wikipedia.org/wiki/Option_key
–Petros P
17年9月21日在21:35
我知道这是同一回事。但这不称为Alt。您只会使人们感到困惑。
–伊桑·艾伦(Ethan Allen)
17-09-23在2:02
对于使用Firefox的任何人,您都可以在Firefox和Firefox中执行完全相同的操作,只需按F12
–罗伯特
19年2月12日在7:10
评论
AJAX请求仅仅是对指定URL的HTTP请求。这些网址是否仍然存在?如果您可以在Web浏览器中访问它,则AJAX可以找到它。@MonkeyZeus是的,URL仍然存在。是否还有其他要求,例如在服务器/ IIS 7中安装Ajax或在web.config中安装某些内容?还是没有必要?您的评论似乎是正确的,导致返回的错误是404(找不到页面),尽管正如我检查的那样,所有视图都在那里并且即使在错误之后它们也确实显示,顺便说一下,该视图显示在“ error:function”中(xhr,status)”,而不是在浏览器中。
AJAX是一种客户端技术,最早在IE6中便已在Web浏览器中得到支持。本质上,与您实际访问网页相比,Web服务器无法区分AJAX请求,因此IIS或Apache中实际上不需要进行任何配置。 jQuery简单地承担了自己的责任,为本机JavaScript XMLHttpRequest函数提供了易于使用的包装,并为您提供了$ .ajax()接口。继续下一条评论...
现代网络浏览器使调试AJAX故障变得异常简单。您使用什么网络浏览器?如果您可以使用Google Chrome浏览器,请告诉我并使用它,因为我最喜欢他们的界面。我等待您的回应
@MonkeyZeus:我已经更新了问题。请看看。你从一开始就是对的。控制器中有一种错误的方法来调用ErrorView.cshtml,我对其进行了修复,现在脚本正在运行,尽管未返回数据。我拥有IE和Chrome的最新版本,并且可以使用其中任何一个。