views:

197

answers:

2

I'm running a weird issue here. I have code that makes jquery ajax calls to a web service and dynamically adds controls using jquery. Everything works fine on my dev machine running IIS 5.1, but not when deployed to IIS 6. I'm using VS2010/ASP.Net 4.0, C#, jQuery 1.4.2 and jQuery UI 1.8.1. I'm using the same browser for each.

It partially works though. The code will add the controls to the page, but they aren't visible until I click them (they aren't visible though). I thought this was a css issue, but the styles are there too.

The ajax calls look like this:

$.ajax({
            url: "/WebServices/AssetManager.asmx/Assets",
            type: "POST",
            datatype: "json",
            async: false,
            data: "{'q':'" + req.term + "', 'type':'Condition'}",
            contentType: "application/json; charset=utf-8",
            success: function (data)
            {
                res($.map(data.d, function (item)
                {
                    return {
                        label: item.Name,
                        value: item.Name,
                        id: item.Id,
                        datatype: item.DataType
                    }
                }))
            }
        })

Changing the content-type makes the autocomplete fail. I've quadruple checked and all the paths are correct, there is no document footer enabled in IIS, and I'm not using IIS compression.

Any idea why the page will display and work properly in IIS 5 but only partially in IIS 6? (If it failed completely, that'd make more sense!). Is it a jQuery or CSS issue?

EDIT: I'm using "contentType: "application/json;" charset=utf-8" I copied a test call that had application/javascript.

@Gaby: I'm well aware of the fact that the server has nothing to do with CSS or javascript, however, that is the only difference between the code that does and doesn't work.

All the jquery/css files are identical between my local dev machine (IIS 5) and the server (iis 6).

@jaymz: I'll give fiddler a try to see if there's a difference. I am using IE8 but it isn't going into compatibility mode.

SOLUTION: (Compatbility Mode!) After checking everything in Fiddler and finding no differences, I tried it in Firefox, where it worked. Got me to thinking and sure enough, I was wrong, IE WAS going into compatibility mode. apparently by default it will use compatibility mode on the intranet, but not localhost (which happened to be the different versions of IIS). I tried IE7 and got the same thing. I need to change my code to make sure it works on IE7 as well.

A: 

Double check if you have deployed everything onto the server with IIS 6 e.g. jQuery 1.4.2 and jQuery UI 1.8.1 etc

codemeit
+2  A: 

Have you run the request through with a tracer? Try using Fiddler in IE, and see if the headers/content is being returned differently from the 2 different servers.

Off the top of my head, I can only think that IE (if it's IE8, you didn't mention what browser you were using), is using Compatability mode when it sees IIS 5, but not for IIS 6. I could be way out with that, but the headers should give you more of an idea of what's different.

Jaymz
+1 For offering insight on how things can become scary with IE. I can imagine myself dealing with a scenario caused by this condition and (not knowing about such possibility) just pull my hairs in despair!
Majid
It WAS using compatiliby mode, not because of the version of the server, but because it was on the intranet and not the local machine. You set me on the right path and fiddler confirmed all the files were the same for me. !
Mikejh99
-1 for lucky guess..? :P
Jaymz