为什么Ajax脚本不在IIS 7.5 Win 2008 R2服务器上运行?
我在开发服务器上有一个在VS 2013上正常工作的Web应用程序,但是一旦我将其发布到IIS 7.5 2008 R2服务器上,位于我的自定义脚本文件上的Ajax脚本就不再工作,尽pipe其他JQuery脚本不调用Ajax的function可以正常工作。 还有什么需要做的,以便有一个Ajax在服务器上工作? 我已经阅读了一些文章,但还找不到答案。 我在IIS和Ajax方面的经验有限。
//更新:
我已经发现Ajax脚本可以工作,而且问题很可能出现在下面一行:
“url:'/ Home / GetRates',//请求的URL”
使用debuger,我发现GetRates()函数在远程服务器中没有被调用,尽pipe它在本地(在VS 2013)开发服务器中。 我看到的唯一区别是path,但不知道如何解决它。 下面是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>
如何debuggingAJAX调用
完整的答案是分散在OP的问题的意见,但我认为这一个帮助最大:
- 转到进行AJAX调用的网页
- 在Chrome中按F12
- 转到networking选项卡
- 通过提交表单#reservSearch来激活AJAX调用
- 在“networking”选项卡中查找对/ Home / GetRates的调用
- 点击它
- 检查“预览”和“响应”选项卡以查看服务器的输出
- 它是否显示您的AJAX调用正在监听的预期HTML数据?