2015-12-02 108 views
0

想要向azure市场进行查询。 API认证是空的用户密码。返回应该是一个json对象。下面的代码将“[object Object]”返回给浏览器。我的错误在哪里?Ajax使用auth获取json文件

<script> 
    $.ajax({ 
    type: 'GET', 
    url: 'https://api.datamarket.azure.com/Bing/SearchWeb/v1/Web?Query=%keyword%27', 
    dataType: 'json', 
    beforeSend: function (xhr) { 
     xhr.setRequestHeader('Authorization', make_base_auth("", "myaccountkeyhere")); 
    }, 
    success: function (data) { 
     JSON.stringify(data, null, 4); 
     document.write(data); 
     console.log(data); 
     } 
    }); 

    function make_base_auth(user, password) { 
     var tok = user + ':' + password; 
     var hash = btoa(tok); 
     return 'Basic ' + hash; 
    } 

回答

0

的问题是你document.writing JSON对象。
您需要:

 
var jsonString = JSON.stringify(data, null, 4); 
document.write(jsonString); 
console.log(jsonString); 

我做了一个快速的jsfiddle这一点。请注意,jsfiddle不允许document.write,但替换您的密钥,你应该看到它的工作。

jsfiddle for loading bing search via json

function make_base_auth(user, password) { 
    var tok = user + ':' + password; 
    var hash = btoa(tok); 
    return 'Basic ' + hash; 
} 

function writeToDom(title, content) { 
    $("#results").append("<div class='header'>" + title + ":</div><div><pre>" + content + "</pre></div>"); 
} 

function showResults(evnt) { 

    $.ajax({ 
    type: 'GET', 
    url: 'https://api.datamarket.azure.com/Bing/Search/v1/Composite?Sources=%27web%27&Query=%27keyword%27', 
    dataType: 'json', 
    beforeSend: function (xhr) { 
     xhr.setRequestHeader('Authorization', make_base_auth("", "YOURKEYHERE")); 
    }, 
    success: function (data) { 
     var search = JSON.stringify(data, null, 4); 
     writeToDom('Json', search); 
     alert(search); 
     console.log(search); 
     } 
    }); 
} 

$(function() { 
    $(document).on("click", "#clickme", showResults); 
}); 
+0

谢谢!现在工作。 – Stefan