1

I am calling Wikipedia opensearch API. The API url is correct you can open it in browser and can get right result. But when I am requesting by this same url,it gives not result,expected result is in JSON format.I am using RESTAPI for sending request. I have observed that if I use any other API for e.g http://ipinfo.io/json ,I get proper output in JSON. But my code is doing nothing for https://en.wikipedia.org/w/api.php?action=opensearch&format=json&search=ToBeSearchedText. Here is the code:

    $(document).ready(function() {

  //when the <submit> button is clicked
  $("button").click(function() {

    var xhr = new XMLHttpRequest();

    var bla = $("#searchitem").val(); //it will store the search query  text
    var url = "https://en.wikipedia.org/w/api.php?action=opensearch&format=json&search=" + bla;

    xhr.open("GET", url, false); //making a GET request
    xhr.send();

    var data = xhr.response; //response is stored in data

    $(".message").html(data); //this is doing nothing,if I try another url like http://ipinfo.io/json,the code works perfectly. Why it is not working for Wikipedia API?

  });

});

The output is in following form if I am able to get it,Red here is the search term returning a list of Wikipedia articles containing this term:

[

    "Red",
    [
        "Red",
        "Redback spider",
        "Red panda",
        "Redshift",
        "Red Dwarf",
        "Red Hot Chili Peppers discography",
        "Red Star Belgrade",
        "Red hair",
        "Red Skull",
        "Reddit"
    ],
    [
        "Red is the color at the longer-wavelengths end of the spectrum of visible light next to orange, at the opposite end from violet.",
        "The redback spider (Latrodectus hasseltii) is a species of venomous spider indigenous to Australia. It is a member of the cosmopolitan genus Latrodectus, the widow spiders.",
        "The red panda' (Ailurus fulgens), also called the lesser panda, 'the red bear-cat, and the red cat-bear, is a mammal native to the eastern Himalayas and southwestern China.",
        "In physics, redshift happens when light or other electromagnetic radiation from an object is increased in wavelength, or shifted to the red end of the spectrum.",
        "Red Dwarf is a British comedy franchise which primarily comprises ten series (the ninth being a mini-series) of a television science fiction sitcom that aired on BBC Two between 1988 and 1993 and from 1997 to 1999, and on Dave in 2009 and 2012, gaining a cult following.",
        "The American rock band Red Hot Chili Peppers since 1984 has released eleven studio albums, three live albums, twelve compilation albums, eight video albums, five extended plays, forty-three singles, and forty-five music videos.",
        "Fudbalski klub Crvena Zvezda (Serbian Cyrillic: Фудбалски клуб Црвена Звезда, IPA: [t͡sř̩ʋenaː zʋěːzda]), commonly known in English as Red Star Belgrade (Serbian: Црвена Звезда Београд / Crvena Zvezda Beograd) or simply Red Star, is a Serbian professional football club based in Belgrade, the major part of the Red Star Sports Society.",
        "Red hair occurs naturally in 1–2% of the human population. It occurs more frequently (2–6%) in people of northern or western European ancestry, and less frequently in other populations.",
        "The Red Skull (Johann Schmidt) is a fictional supervillain appearing in American comic books published by Marvel Comics.",
        "Reddit (/ˈrɛdɪt/) is an entertainment, social news networking service, and news website. Reddit's registered community members can submit content, such as text posts or direct links."
    ],
    [
        "https://en.wikipedia.org/wiki/Red",
        "https://en.wikipedia.org/wiki/Redback_spider",
        "https://en.wikipedia.org/wiki/Red_panda",
        "https://en.wikipedia.org/wiki/Redshift",
        "https://en.wikipedia.org/wiki/Red_Dwarf",
        "https://en.wikipedia.org/wiki/Red_Hot_Chili_Peppers_discography",
        "https://en.wikipedia.org/wiki/Red_Star_Belgrade",
        "https://en.wikipedia.org/wiki/Red_hair",
        "https://en.wikipedia.org/wiki/Red_Skull",
        "https://en.wikipedia.org/wiki/Reddit"
    ]

]

But the problem is I am not getting it,I tried to check the status by console.log(xhr.status); ,it did nothing. That means no data is being returned. Please correct my code and help me understand what am I doing wrong?

Here is the link to my Codepen http://codepen.io/meow414/pen/kXxzzR

Uzma Khan
  • 139
  • 1
  • 3
  • 14
  • may be this will help: http://stackoverflow.com/questions/15293680/fetch-random-excerpt-from-wikipedia-javascript-client-only/15293681#15293681 – cyboashu Jul 13 '16 at 20:06
  • No,my problem is not similar. – Uzma Khan Jul 13 '16 at 20:11
  • Possible duplicate of [Ajax GET request over HTTPS](http://stackoverflow.com/questions/15375908/ajax-get-request-over-https) –  Jul 13 '16 at 20:43

2 Answers2

0

the reason why you don't see any response loaded is because of same-origin-policy enforced by browser. you are trying to make an https get request while you are currently on http page. the other request works fine because it is an http request.

see this for more info.

while you are there - since you are using jquery - you don't have to rely on xmlhttprequest native object. you can use jquery.get() for GET requests or $.ajax() which supports all HTTP verbs.

hope that helps!

Community
  • 1
  • 1
0

https://www.mediawiki.org/wiki/Manual:CORS

This is specific to using CORS with the mediawiki. For searches that are performed anonymously include &origin=* within the url.

https://en.wikipedia.org/w/api.php?action=opensearch&format=json&origin=*&search=
guest
  • 1