2016-05-16 35 views
0

我有一個jQuery API調用,它沒有給我任何響應。下面的代碼:維基百科的API沒有響應使用jQuery調用

$(document).ready(function() { 
    $("#form").submit(function() { 

    var apiCall = "https://en.wikipedia.org/w/api.php?action=query&format=json&prop=info|extracts&generator=search&callback=?&inprop=url&exsentences=3&gsrsearch=" + $("#searchTerm").val(); 

    $.getJSON(apiCall, function(data) { 
    console.log(data); 
     }); 

    }); 

    }); 

我已成功使用此URL得到迴應:https://en.wikipedia.org/w/api.php?action=query&format=json&list=search&utf8=1&srsearch=" + $("#searchTerm").val() + "&callback=?"

的問題是,我希望能夠用返回的每個頁面的URL,以及上述API調用只給我標題和片段,但沒有URL。

根據MediaWiki(在沙箱中驗證)提供URL的API調用是頂部代碼示例中的一個:https://en.wikipedia.org/w/api.php?action=query&format=json&prop=info|extracts&generator=search&callback=?&inprop=url&exsentences=3&gsrsearch=" + $("#searchTerm").val()

但在我的代碼中,它不返回任何東西。你可以看到整個行動在:https://codepen.io/khaledallen/pen/VaNGMa?editors=1011

任何指導將不勝感激(這也是我的第一個stackoverflow問題,所以任何關於問題禮儀的指導是有幫助的)。

+0

這兩個答案都解決了另一個問題,即頁面刷新時第一次提交表單時未提取任何數據,但該URL仍未生成響應。請幫忙 –

回答

0

當您提交表單時,它實際上應用了瀏覽器定義的默認行爲,這意味着它將您重定向到表單的action屬性。實際上,因爲action設置爲#,頁面只是刷新。

爲了解決這個問題,您應該防止默認行爲簡單地使用:

$(document).ready(function() { 
    $("#form").submit(function(e) { 
     e.preventDefault(); 

添加事件對象作爲參數傳遞給提交事件處理程序(e),並在應用preventDefault方法它。

看看這個codepen:https://codepen.io/anon/pen/PNgMGW?editors=1011

+0

謝謝。這是代碼的一個問題。它仍然沒有加載任何API網址。只是一個空的物體。 –

+0

它確實加載。 codepen的控制檯出於某種原因不顯示它。打開開發者工具,你會看到數據。 –

0

我想通了。

  1. 似乎MediaWiki沙盒生成的URL用UTF-8代碼替換特殊字符,但它不能讀取它們(?)。我將URL中的所有內容更改爲常規字符,並且工作正常。
  2. 添加format=2選項幫助。這就是MediaWiki內(https://www.mediawiki.org/wiki/API:JSON_version_2
  3. 這裏JSON格式選項一個人返回標題和URL網址:https://en.wikipedia.org/w/api.php?action=query&format=json&prop=info&generator=search&callback=?&utf8=1&formatversion=2&inprop=url&gsrsearch=Sophia&gsrprop=snippet"

我不能得到它顯示的網址,並提取/片段,所以這只是一個部分解決。

+0

最後:頁面的URL只是基本URL +頁面標題。所以我可以使用舊的解決方案,它一直給出一個片段。 'https://en.wikipedia.org/w/api.php?action=query&format=json&list=search&utf8=1&srsearch=「+ $(」#searchTerm「)。val()+」&callback =?'並追加頁面標題爲基本網址。 –