i'm trying to get a value from a CGI with jquery ajax. i can't change any settings of the CGI because it's not on my own server.
all i know about the CGI is that if i directly tape this in a browser address bar:
"http://otherdomain/cgi-bin/getvalue.exe?value"
then i get a response value, i.e. 1234, which is shown in a blank browser window.
with the following ajax call i get the response value in firebug -> network -> response tab (1234). but i can't access the value in javascript. console.log(data) just returns "undefinded".
is there a way to catch the value with javascript?
i think i have to send ajax request as dataType: "script" because a password (cookie) must be send to the CGI as well. if i choose dataType: "text" the password from cookie is not send in the request header.
$.ajax({
type: "GET",
url: "http://otherdomain/cgi-bin/getvalue.exe?value",
crossDomain: true,
cache: true,
dataType: "script",
success: function(data, textStatus, jqXHR) {
console.log(data);
},
error: function(jqXHR, textStatus, errorThrown) {
console.log(errorThrown);
console.log(textStatus);
console.log(jqXHR);
}
});
Due to the same origin policy AJAX doesn't allow cross domain requests, except those that have a response of type JSONP
. You'll need to set up a proxy on your server to query using AJAX, which submits the request to the other domain then returns the response that it receives to the AJAX call.
dataType
property is the expected data type of the response, not the request. If you leave it blank, it uses the "best guess" default, whereby jQuery attempts to guess the type based on the format of the response - Anthony Grist 2012-04-04 20:58