0

在两天的大部分时间里,我一直对这个 QuickBase jQuery/Ajax 问题感到困惑。考虑在 $(function()... 中运行的这个 jquery 代码:

    <script type="text/javascript">
        $(function() { 
            $.ajax({
                type: "GET",
                url: "https://www.quickbase.com/db/<mydbid>", // <- returns error
                //url: "http://pfs.fedcap.com/testdata.xml",  // <- returns xml
                data: {
                    act:"API_DoQuery",
                    query:"{7.EX.235445}",
                    apptoken:"<myapptoken>"
                },
                dataType: "xml",
                error: function(xhr,status) {
                    alert("error");
                },
                success: function(xml) { 
                    alert("OK");
                }
            });
        });
    </script>

如前所述,指向 QuickBase 的 url 返回错误,但指向 xml 文件的 url 按预期返回 xml。但这里是关键:xml 文件 (testdata.xml) 是通过将我的浏览器直接指向指定的 url 创建的:https : //www.quickbase.com/db/<mydbid >?a=API_DoQuery&query={7.EX。 235445}&apptoken=<myapptoken> 并将结果保存到 testdata.xml。在我看来,jquery ajax 调用应该产生与 testdata.xml 文件相同的结果。但事实并非如此。

Firebug xml 窗格显示,对 QuickBase 站点执行的调用返回“XML Parsing Error: syntax error Location: moz-nullprincipal:{3e0d38f1-0e36-4adb-965e-d0e7d68ab0cb} Line Number 1, Column 1:Reload the page to获取来源:https ://www.quickbase.com/db ..."

我在看什么?有什么想法吗?

4

1 回答 1

2

虽然可以编写自己的 API 的 jQuery 实现,但最好使用他们自己的 javascript SDK。https://github.com/QuickbaseAdmirer/Quickbase-JavaScript-SDK

您缺少的重要部分是获取“票证”的身份验证调用。提供应用程序令牌不足以进行 DoQuery 调用。您必须进行身份验证,然后使用发回的票证进行更多 API 调用。对于 url 请求,可以很容易地附加票证&ticket=randomcharacters。对于 XML 请求,只需添加<ticket>randomcharacters</ticket>到您的 XML 请求中。

https://github.com/QuickbaseAdmirer/Quickbase-JavaScript-SDK有更多关于如何使用 Authenticate 调用的信息。

于 2012-08-06T18:34:14.733 回答