【问题标题】:Unable to send object from Jquery(Ajax) call无法从 Jquery(Ajax) 调用发送对象
【发布时间】:2015-09-28 00:03:49
【问题描述】:

我正在尝试使用 JS+ JqueryAjax 调用将数据发送到 MongoLab DB。 我的问题是我能够在 DB 中看到 OID,但没有填充数据。 签入代码时,网络设置我的有效负载始终为空。 我无法弄清楚为什么我的对象行为不端。

    <!DOCTYPE html>
<html lang="en">
<head>
    <title>Boom!</title>
    <link href="https://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
    <script src="https://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script>
    </head>
<body>
    <div class="container">
        <h1>Stuff.</h1>
        <p>
            <button class="btn btn-large">Press Me!</button>

        </p>
        <form name="ajaxform" id="ajaxform"  method="POST">
First Name: <input type="text" name="fname" id="fname" value =""/> <br/>
Last Name: <input type="text" name="lname"  id="lname" value ="" /> <br/>
</form>

    </div>

</body>
</html>
    <script>
        var stuff = {
            run: function () {
                $('button').bind('click', function () {
                    if ('geolocation' in navigator) {
                        var geo_options = {
                            name: fname.value ,
                            surname: lname.value

                        };
                        navigator.geolocation.getCurrentPosition(stuff.send, stuff.error, geo_options);
              window.alert(geo_options.fname);
              document.write(geo_options.fname.value);
              console.log(geo_options.fname.value);

                    }
                });
            },
            error: function (msg) {
                console.log(msg);
            },
            send: function (object) {

                $.ajax({
                    url: "https://api.mongolab.com/api/1/databases/geolocation/collections/boom?apiKey=[apiKey]",
                    type: "POST",
                    data: JSON.stringify( object ),
                    contentType: "application/json; charset=utf-8"
                }).done(function( msg ) {
                    console.log(msg);
                });
            }
        };
        $(function() {
            stuff.run();
        });
    </script>

我总是在弹出窗口和控制台中看到我的对象未定义。我刚刚开始使用 JS 和 Jquery。

【问题讨论】:

    标签: javascript jquery ajax mongodb mlab


    【解决方案1】:

    fnamelname 未定义。要访问它们的值,您需要使用这两个函数:$("#fname").val()$("#lname").val()。我很惊讶您在控制台中得到未定义而不是错误。

    当您尝试访问geo_options 中的这些值时,您没有使用正确的键。 window.alert(geo_options.fname); 应该是 window.alert(geo_options.name);

    我还将运行、错误和发送函数保留在对象stuff 之外,因为似乎不需要它。而且我认为这些功能可能需要在文档中准备好 sn-p (您在底部拥有的)才能保证选择器正常工作,但我不确定。

    【讨论】:

      猜你喜欢
      • 2017-02-16
      • 2018-01-12
      • 1970-01-01
      • 1970-01-01
      • 2016-12-02
      • 1970-01-01
      • 2018-11-09
      • 1970-01-01
      • 2011-12-16
      相关资源
      最近更新 更多