views:

4334

answers:

5

Can jquery ajax code call a webservice from another domain name or another website?
Like this:

 $.ajax({
            type: "POST",
            url: "http://AnotherWebSite.com/WebService.asmx/HelloWorld",
            data: "{'name':'" + $('#price').val() + "'}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(msg) {alert(msg);}
            });


And how should i config this webservice?

A: 

Making requests for other domains are forbidden in the most browsers due to Same origin policy.

A few exceptions are

  • a user-side extensions, like GreaseMonkey
  • javascript include from the script tag
  • adobe flash application with properly configured server
Sergey
I don't have the rep to edit, but you should spell greasemonkey correctly.
Benson
A: 

No, requesting something from a web server other than the one your code came from is the underpinning of what's called a Cross Site Scripting (XSS) attack. As such, that ability is forbidden. There are ways around it, but they are hacky at best.

The one I've heard the most about is writing a flash application that makes a TCP connection to the server in question.

Benson
+4  A: 

you can use JSONP to make cross domain requests. with jquery you can make a jsonp request using the $.json function and specifying a callback in the url like so:

&callback=?

Actually, all you need is the question mark as the param value, the param name can be anything.

Only catch, is that the server you are making the request to must support jsonp

For more in depth information see this blog post about making jsonp work with the new york times json api:

http://notetodogself.blogspot.com/2009/02/using-jquery-with-nyt-json-api.html

mkoryak
A: 

What is commonly done is have your jQuery call a web service on your server, and have that web service communicate with the external web service. Not the most preferred method, but it works.

Dan Appleyard
+1  A: 

You need to use a JSONP call. Last two paragraphs on this page. Go over the basics.

Philip T.