Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用jqueryajax和获取XML_Jquery_Ajax_Xml_Google Spreadsheet Api - Fatal编程技术网

使用jqueryajax和获取XML

使用jqueryajax和获取XML,jquery,ajax,xml,google-spreadsheet-api,Jquery,Ajax,Xml,Google Spreadsheet Api,我正在尝试使用Google电子表格的API从中获取XML,如下所示: 在协议选项卡下。我可以使用Postman并返回XML,但现在我正在使用JQuery进行尝试,它似乎不起作用。它之所以成功,是因为我在success函数中添加了警报,并且它们显示为请求成功,但我尝试访问XML的每个方法都返回了null或undefined。以下是我的AJAX请求: var xml1; $.ajax({type: "GET", url: "https://spreadsheets.google.c

我正在尝试使用Google电子表格的API从中获取XML,如下所示:

在协议选项卡下。我可以使用Postman并返回XML,但现在我正在使用JQuery进行尝试,它似乎不起作用。它之所以成功,是因为我在success函数中添加了警报,并且它们显示为请求成功,但我尝试访问XML的每个方法都返回了
null
undefined
。以下是我的AJAX请求:

var xml1;
$.ajax({type: "GET",
        url: "https://spreadsheets.google.com/feeds/cells/" + key + "/" + sheetID + "/private/full?min-row=1&min-col=1&max-row=1",
        dataType: "xml",
        contentType: "application/atom+xml",
        cache: false,
        async: true,
        crossDomain: true,
        success: function(result) {xml1 = result;}})

我把它放在一个
$中。当()
完成时,我会提醒
xml1
的值,它是
null
未定义的
。我是否没有正确访问结果,或者这里是否存在其他问题?

xml1应该在该函数之前定义,如果您希望在该函数之外访问它

var xml1;
$.ajax({type: "GET",
        url: "https://spreadsheets.google.com/feeds/cells/" + key + "/" + sheetID + "/private/full?min-row=1&min-col=1&max-row=1",
        dataType: "xml",
        contentType: "application/atom+xml",
        cache: false,
        async: true,
        crossDomain: true,
        success: function(result) {xml1 = result;}
})

console.log(xml1);

你能提供更多的代码吗?比如在哪里声明变量以及如何检查数据?

它不起作用的原因与我的另一个问题类似


原因是您需要一个访问令牌来执行对电子表格的HTTP请求。我已经读到,邮递员可以通过某种方式解决这个问题,这就是为什么相同的请求在移动设备上不起作用。

您可以通过将datatType临时设置为“text”来检查确切的返回字符串吗?这可能有助于调试情况。我刚刚试过。它在警报中没有显示任何内容,因此我假设它是一个空长度字符串。如果手动打开url,会发生同样的情况吗?手动打开url是什么意思?我用Postman试过了,效果很好,url应该是正确的,我在这段代码之外有提示,显示了密钥和sheetID。好吧,在不使用contentType的情况下试一下。如果它仍然不起作用,请查看浏览器中的开发者控制台,也许它可以为您提供详细信息,我在它之外声明了这一点。我只是没有表现出来。