JavaScript ajax 调用有道翻译api?

ajax调用有道翻译api的时候控制台返回的信息如下:

https://img.mukewang.com/5c63bcb3000138e806750060.jpg

点开url后的json:
https://img3.mukewang.com/5c63bcb500015fd408000034.jpg

ajax代码:

$.ajax({

    url: 'http://openapi.youdao.com/api',

    type: 'get',

    dataType: 'jsonp',

    data: {

        q: query,

        appKey: appKey,

        salt: salt,

        from: from,

        to: to,

        sign: sign

    },

    success: function (data) {

        document.write(data.basic.explains);

    } 

});

为什么这个data.basic.explains输出不到前端?这样算是调用成功了么== 这段代码是百度翻译api JavaScript的示例代码改的。小白还不太懂这是什么原因。

慕标琳琳
浏览 606回答 1
1回答

慕仙森

首先,建议不要使用 success,改用 jQuery Promise 的 .done() 回调,举例$.ajax(settings)    .done(function(data) {        document.write(data.basic.explains);    });然后,JSONP 方式需要指定一些 JSONP 的参数,具体如何指定要看 API 提供方如何调用回调函数,相关参数名称是 jsonp 和 jsonpCallback,可以在jQuery Ajax 文档中找到详细说明。但是一般提供 API 的可能都是以 JSON 或者 XML 或者 Plain 方式提供,很少会以 JSONP 方式提供的,这一点建议你去看看有道 SDK 的说明。最后就是你不知道调用是否成功,可以对 ajax 返回的 jqXHR(Promise) 使用 .done() 回调和 .fail() 来回添加一些日志来观察,比如$.ajax(settings)    .done(function(data) {        document.write(data.basic.explains);    })    .done(function(data) {        console.log("got data:", data);    })    .fail(function() {        console.log("error:", arguments);    });这样可以在控制台看到调用结果是否成功,以及成功获得的数据和失败相关的信息。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript