[Last Call] Learn about multicloud storage options and how to improve your company's cloud strategy. Register Now

x
?
Solved

Ajax call doesn't work in Firefox

Posted on 2009-04-02
8
Medium Priority
?
2,288 Views
Last Modified: 2013-12-07
Hello Experts
We have a webservice that was developed and tested in IE. After development we found out that it doesn't work in firefox. There is no error on the page but the drop down data that is returned via webservice call is empty.. we're using jqoery jquery-1.3.2.js is used for the webservice call...

I would appreciate if someone knows about any known bug or put my on the path to find the answer..
when I look at the firefox error console. it says:
uncaught exception: [Exception... "Access to restricted URI
denied"  code: "1012" nsresult: "0x805303f4 (NS_ERROR_DOM_BAD_URI)"

Thanks
Rod
$.ajax({
                    type: "POST",
                    url: "http://..../TaxonomySearchService.svc/web/GetAssociation",
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    data: '{ "SubjectSide_TargetID":"' + SubjectSide_TargetID + '", "...."'"}',
                    success: function(data, associationValues) {
 
 
                        activityOptions[index++] = new Option(heading, "");
                        
                        $.each(data.d, function(i, association) {
                            var value = association.TARGET_VOCAB_ID;
                            var text = association.TARGET;
 
                            var activityOption = new Option(text, value);
                            activityOptions[index++] = activityOption;
                        });
 
                        LoadData(dropdown, activityOptions);
                    },
                    error: function(msg) {
                        alert(msg);
                    }
                });

Open in new window

0
Comment
Question by:roddios
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 4
8 Comments
 
LVL 18

Expert Comment

by:Morcalavin
ID: 24051634
Is the url on the same domain?

Sometimes referencing a link with the http:// or http://www prefixes may cause the cross-domain scripting security to fire.

If it's on the same domain, try using just an absolute path reference to the script:
url: "/TaxonomySearchService.svc/web/GetAssociation"
0
 

Author Comment

by:roddios
ID: 24051805
Thanks for your response. no the url is actually on a remote machine
0
 
LVL 18

Expert Comment

by:Morcalavin
ID: 24051895
You can't do ajax calls to a remote machine.  Ajax only works on the same domain.  In order to do ajax calls to another domain, you must call a proxy script on your domain that runs server side.  That proxy script contacts the remote domain and returns the information to your local domain.
0
Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

 

Author Comment

by:roddios
ID: 24052152
I'm on VPN connected to the domain. What I meant was that the service is not running locally so I don't think I can omit the http from the url. My ajax call works in IE7  
0
 
LVL 18

Expert Comment

by:Morcalavin
ID: 24052306
If your javascript resides on http://www.mydomain.com and you want to access http://www.yourodmain.com, you cannot do that without a proxy script like I mentioned in the above post.  Browsers have a cross-domain policy that prevents the xmlhttprequest object from contacting other domains.  If it works in IE7 and there are two domains involved, that's a bug.
0
 

Author Comment

by:roddios
ID: 24052592
I have absolutely no idea what a javascript proxy is.. could you explain /  give examples
0
 
LVL 18

Accepted Solution

by:
Morcalavin earned 2000 total points
ID: 24052708
The proxy is actually a script that resides on the server side.  It can be written in any server side language that has an http client object available for it.  Heck, you could even use CGI/wget combo.  Anyway, here is a brief example.

weather.com has a web service, we'll call it http://weather.com/getweather.aspx.  I would like to use this webservice on my website located at mysite.com.  I would like to use javascript/ajax to query the xml from the weather.com service.  However, ajax cannot cross domains, so I'm out of luck.  Or am I?

My website has perl/php/asp.net/etc.  I can use this server side language to query weather.com for me.  Let's say I'm using perl.  My perl code may be at http://mysite.com/cgi-bin/getweatherinfo.cgi and my script may look something like this:

#!/usr/bin/perl
use LWP::Simple;
my $html = get('http://weather.com/getweather.aspx'); //does the same thing that an ajax call does, but server side scripts are not bound by the same domain policy that ajax in a browser is.
print $html if defined $html;  //pring out my html

In my ajax, instead of saying:
ajaxobject.open('get', 'http://weather.com/getweather.aspx', true);
I would say:
ajaxobject.open('get', 'http://mysite.com/cgi-bin/getweatherinfo.pl', true);

Ajax calls MY script, which is on the same domain.  My CGI script goes out and retrieves the information and prints it out.  It can do this because it is not bound by the same security policy javascript running in the browser is.

Yahoo has a nice article of it:
http://developer.yahoo.com/javascript/howto-proxy.html


0
 

Author Comment

by:roddios
ID: 24053245
thanks.. good stuff
0

Featured Post

Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

I found this questions asking how to do this in many different forums, so I will describe here how to implement a solution using PHP and AJAX. The logical flow for the problem should be: Write an event handler for the first drop down box to get …
How to build a simple, quick and effective accordion menu using just 15 lines of jQuery and 2 css classes
The viewer will learn the basics of jQuery, including how to invoke it on a web page. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery.: (CODE)
This Micro Tutorial will demonstrate how to add subdomains to your content reports. This can be very importing in having a site with multiple subdomains.
Suggested Courses

650 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question