I was trying to call eBay FindProducts API using AJAX (post
request) but was stuck at the following error:
XMLHttpRequest cannot load htt
I finally got thi to work by doing 2 things, Thanks to Albin.
I changed to dataType:'jsonp' added jsonp:'callbackname'. Because jQuery by default calls the callback parameter callback, but eBay expect it to be called 'callbackname'. XML was not working due to CRO problem with eBay(need to confirm though.)
Used the chrome console to debug the object retreived, converetd to string using JSON.Stringify().
Hope this helps somebody!
Cheers, Rajesh
If you add &responseencoding=JSON
to your URL you will get the response as JSON according to docs
UPDATE
Working example. What I've done is that I changed to dataType:'jsonp'
added jsonp:'callbackname'
. Because jQuery by default calls the callback parameter callback
, but eBay expect it to be called callbackname
. What you have to do is add your parameters to the data map. Make sure you use the correct parameter names, check the docs and use the URL method not the header method. Hope this helps.
If you read the jQuery.ajax() documentation, you can use jsonp and still have a different return type to be parsed.
multiple, space-separated values: As of jQuery 1.5, jQuery can convert a dataType from what it received in the Content-Type header to what you require. For example, if you want a text response to be treated as XML, use "text xml" for the dataType. You can also make a JSONP request, have it received as text, and interpreted by jQuery as XML: "jsonp text xml." Similarly, a shorthand string such as "jsonp xml" will first attempt to convert from jsonp to xml, and, failing that, convert from jsonp to text, and then from text to xml.
So basically all you have to do is change your dataType
line of code to this:
dataType: ($.browser.msie) ? "jsonp text xml" : "xml",
Or you can add a &responseencoding=JSON
parameter to your URL, as stated in another answer.