Summary of problem
After logging in with Chrome via Forms Authentication. The landing page as returnUrl will error my jQuery ajax without hitting the server. The status code = 0
and the message = "error"
. (Hardly useful). Having tried Firefox and not being able to replicate the problem, I am starting to think Chrome is the issue. Clearing caches, closing and reopening does not fix. The closest article i can find is this. jQuery Ajax - Status Code 0?
However, the URL is relative, /Test
Another SO article: jquery ajax problem in chrome
Longer description
I am getting an error with jQuery ajax. It seems that immediately after logging in with forms authentication; the landing page (returnUrl), will JS error. Then after refreshing the page (F5), the script will work (mostly). Even if not using F5, navigating to the same page using a link will allow the JS to work (mostly). So straight after login is my main testing path.
Also, navigating in another tab to /Test
action directly, works. The original tab still errors until i navigate or refresh it as mentioned.
I have had times where the navigating or f5 refresh does not stop the error. Thus the use of "mostly" in the opening paragraph.
After a day and a bit of not being able to find a solid reason through research, JS debugger, simplification of code and various scenarios; I need to request some help.
Javascript error feedback
The most I can gather is a status code of 0
and an error message of "error"
.
Software and versions
ASP.NET MVC 3
Chrome v28.0.1500.72 m
jQuery v1.8.3
AttributeRouting
With Chrome, I have also tried emptying the cache and CTRL+F5.
MVC
I have an action protected by an [Authorize(Roles = "Admin")]
Disabling this attribute does appear to solve my problem and then later on, not. So, sorry if any earlier statements confused. lol, short on hair!
[GET("Test")]
public ActionResult Test()
{
Console.WriteLine("Test");
return new EmptyResult();
}
Any javascript script files are not behind a folder that is protected with forms authentication.
jQuery doc.ready
I have a jQuery error event which I have used to pause debugging on to see the contents of the objects.
//-- while I am using this method, I have also used the `error: `
//-- part of $.ajax with the same result.
$(function ()
{
$(document).ajaxError(function (event, jqxhr, settings, exception)
{
Debug.Log("event: " + event);
Debug.Log("jqxhr: " + jqxhr.responseText);
Debug.Log("settings: " + settings);
Debug.Log("exception: " + exception);
});
});
I have a jQuery method which loads using the following events. While the followig script looks like it would slam the server. There is timing logic to ensure it only hits every 5 seconds.
$(document).on('mousemove','*',function(e){ TestMethod(this,e,'mousemove');});
Javascript method
This is my ajax call which is as simple as I can make it.
function TestMethod(sender, e, eventTrgger)
{
$.ajax(
{
type: "GET",
url: '/Test',
dataType: 'html',
success: function (html)
{
//-- tested with nothing here.
}
});
}
Fiddler
When the error occurs, Fiddler does not show a GET request, meaning the server is not hit. Also, I place a debugger breakpoint in the action confirms the action does not get hit.
Additional: Since the ajax call occurs every 5 seconds. While on the page and seeing status-0 and error-"error"; I clear the cache and without refreshing the page, chrome and the ajax request starts working. For the record, my chrome cache seetings are set to as little cache as I am allowed to configure.