• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1468
  • Last Modified:

Cannot Obtain the Response Message of a jQuery AJAX call (JSON request)

In the attached piece of AJAX call through JSON request, I get an alert message saying "Status: success" but cannot get the response message somehow. We are inclined to use the Webservice call request with PHP and AJAX.

However, we do get the response text if tried through RESTClient or POSTER, attached an example screenshot.

Could someone please help?
<script type="text/javascript" src="/scripts/jquery-1.4.2.min.js"></script>
<script type="text/javascript">
$.ajax({
    type: 'POST',
    url: 'http://site-name.net:8095/WebService/purchase/markPurchase',
    dataType: 'json',
    contentType: 'application/json; charset=utf-8',
    data: '{"authorizationToken":"xyz=","purchaseKey":"testmsg", "identifier":"1","purchaseType":"2"}',
    success: function(data, resultState) {
        if (!resultState) {
            alert('No result found!');
        } else {
            alert('Status: ' + resultState);
        }
    },
    error: function(xhr) {
        alert(xhr.statusText);
    },
    complete:function() {
        //
    }
});
</script>

Open in new window

poster-webservice-response.PNG
0
ldbkutty
Asked:
ldbkutty
1 Solution
 
Ivo StoykovCommented:
check what type of response is returned - xml, html, json...
0
 
Gurvinder Pal SinghCommented:
can you share the output of alert(data); in the else section of success handler?

How did you know if you are not getting the response?
0
 
ldbkuttyAuthor Commented:
With Chrome firebug console, got this error message...

XMLHttpRequest cannot load http://site_name:8095/ECMWebService/purchase/markPurchase. Origin https://www.xyz.com is not allowed by Access-Control-Allow-Origin.

May be the server is thinking that am trying to hack the server through cross-site scripting. http://en.wikipedia.org/wiki/XMLHttpRequest#Cross-domain_requests

If the site_name can whitelist our "xyz" domain in the Access-Control-Allow-Origin setting of web-server, will it be good? I am exploring the Access-Control-Allow-Origin property right now ....
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.

 
leakim971PluritechnicianCommented:
You need to use a proxy, cross domain ajax call is not allowed for security purpose, for example this one : http://www.daniweb.com/code/snippet216729.html
0
 
ldbkuttyAuthor Commented:
the proxy was a great idea, but it also results in the following error:

Failed to load resource: the server responded with a status of 405 (Method Not Allowed) proxy.php?proxy_url=site_name.net:8095/ECMWebService/purchase/markPurchase
0
 
leakim971PluritechnicianCommented:
the proxy_url is a full url (encoded with encodeURIComponent : http://xkr.us/articles/javascript/encode-compare/)  http:
$.ajax({
    type: 'POST',
    url: 'proxy.php?proxy_url=' + encodeURIComponent( "http://site-name.net:8095/WebService/purchase/markPurchase" ),

Open in new window

0
 
jjperezaguinagaCommented:
Greetings ldbkutty,

Please feel free to research about CORS (Cross-Origin Resource Sharing) and XML HTTP Request Level 2. This is already a W3C working draft.

http://www.w3.org/TR/cors/
http://www.w3.org/TR/XMLHttpRequest2/

Unluckily, XML HttpRequest Level 2 is still not supported as part of the jquery library so you would need to do some code by yourself. However, I think for this case, giving a quick read to CORS will be enough to solve your problem.

Best regards,
-JJ

0

Featured Post

Important Lessons on Recovering from Petya

In their most recent webinar, Skyport Systems explores ways to isolate and protect critical databases to keep the core of your company safe from harm.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now