【问题标题】:POSTing JSON document to an IBM Cloudant database using jQuery使用 jQuery 将 JSON 文档发布到 IBM Cloudant 数据库
【发布时间】:2015-09-15 02:51:35
【问题描述】:

这对于某些人来说可能非常基本(希望如此),但我已经注册了 IBM bluemix,并且我试图仅使用 jQuery 将文档发布到 Cloudant 数据库。该数据库称为历史站点,文档具有称为名称、时代和访问权限的索引。它对我不起作用,我收到错误警报。任何对初学者有耐心的 CLoudant 专家将不胜感激。

    <!DOCTYPE html>
     <html>
      <head>
      <meta charset="UTF-8">

      <link href="css/history.css" rel="stylesheet">

      </head>
     <body> 

      <div id="holder">

       <div id="heading"><h1 class="mainTitle">The Historical Site Exchange</h1>               </div>
<div class="form-holder">
<h4 class="form-heading">Enter Your Historical Site to Match the List</h4><br />
<div class="insert-holder">

        <form>
        <div class="inserts">Name: <input type="text" id="one" style="width:80%;" /></div>
        <div class="inserts">Era: <input type="text" id="two" style="width:80%;" /></div>
        <div class="inserts">Access: <input type="text" id="three" style="width:80%;" /></div>

        <div class="inserts"><button id="trialer">Add Site</button></div>

        </form>
    </div>

</div>
</div>
<script src="https://code.jquery.com/jquery-1.10.2.min.js"></script>
<script>
$(document).ready(function(){
    var one=$('#one').val();
    var two=$('#two').val();
    var three=$('#three').val();

    $("#trialer").on('click', function(){
        var requester={ name:one, era:two, access:three}
        $.ajax({
            type: 'POST',
            url: "https://fba531c7-0a0e-437e-b1e3-962c3968f18e-bluemix:846d41093464a968dd6b12310cb78e2651cbf91bfd069c69d0e1b18447311213@fba531c7-0a0e-437e-b1e3-962c3968f18e-bluemix.cloudant.com/historysites",
            data: requester,
            success: function(ok){
                alert('uploaded');
            },
            error: function(nope){
                alert('afraid not');
            }

    });




    });
});


</script>


    </body>
</html>

【问题讨论】:

    标签: jquery api post cloudant


    【解决方案1】:

    您不应该直接从客户端 JavaScript 代码与数据库对话。任何人都可以通过在浏览器中查看源来查看您的数据库凭据。

    另外,您没有告诉我们您遇到了什么错误,但很可能是浏览器限制了跨域 xhr 调用(安全限制)。在浏览器中打开开发者控制台并查看控制台选项卡。默认情况下,浏览器不允许 JavaScript POST 到另一个域,除非您调用的 url 实现了 CORS 并将您的域列入白名单。

    您可以从服务器端代码调用数据库,例如 php、node、servlet 等

    【讨论】:

    • 开发者控制台没有错误。我自己的错误处理程序(警报)出现。有人告诉我 api 可以直接连接到 Cloudant noSQL 数据库,也许我被误导或误解了它们
    • 为了帮助我们进一步了解 ajax 错误,您是否也可以提醒该错误?可能是这样的:error: function(jqXHR, textstatus, errorThrown) { alert('text status ' + textstatus + ', err ' + errorThrown); }
    【解决方案2】:

    确保您连接到服务器端的 Cloudant 数据库。有几种方法可以连接到您的数据库。 一种方法是使用以下代码连接到您的 cloudant 数据库。确保将此代码写入包含路由的文件中,或者将其放在单独的文件中并将数据库导出到您的路由文件:

    var cloudant  = require('cloudant')("MYUSERNAME:MYPASSWORD@MYACCOUNT.cloudant.com");
    console.log("logged into cloudant");
    
    db = cloudant.db.use("Name_of_database");
    

    现在您可以使用 db.insert、db.destroy 等访问数据库中的文档。

    另一种方法是使用所有数据库访问信息创建和对象,然后您可以使用它发送请求。

      var options = {
        hostname: "ACCOUNT.cloudant.com",
        path: "/DB_NAME/DOCUMENT_ID",
        method: 'GET',
        auth: "USERNAME" +":" + "PASSWORD"
      }
    
     request.get(options, function(err,body) {...});
    

    您要在“选项”中添加的变量因您的要求而异。例如,您可能想要也可能不想添加标题,您可能需要删除文档 ID 等。请查看 github.com/request/request 上的文档,或者如果您对此有任何疑问,请在此处询问我方法。祝你好运。

    【讨论】:

    • 对不起,在您想将主机名更改为 url 的选项下
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-30
    • 1970-01-01
    • 1970-01-01
    • 2021-10-03
    相关资源
    最近更新 更多