【问题标题】:Acess local scope访问本地范围
【发布时间】:2014-09-03 14:09:39
【问题描述】:

我需要访问 PUT 请求中的预留以发送到 url /datas。有人知道怎么做吗?

<head>
    <meta charset="UTF-8">
    <title><%= title %></title>
    <link rel="stylesheet" href="bootstrap/dist/css/bootstrap.css">
    <script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
</head>
    <style type="text/css">
        .starter-template {
            margin-top: 150px;
        }

        .checkbox {
            width: 40px;
        }
    </style>
<body>
    <div class="navbar navbar-inverse navbar-fixed-top" role="navigation">
        <div class="container">
            <div class="navbar-header">
                <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target=".navbar-  collapse">
                <span class="sr-only">Toggle navigation</span>
                </button>
                <a class="navbar-brand" href="#">Banco de dados</a>
            </div>

            <div class="collapse navbar-collapse">
                <ul class="nav navbar-nav">
                    <li class="active"><a href="/">Cadastros</a></li>
                    <li><a href="datas">Datas</a></li>
                </ul>
            </div> <!--/.nav-collapse -->
        </div>
    </div>
    <div class="container">
    <div class="starter-template">
        <table class="table">
            <thead>
                <tr>
                    <th>✓</th>
                    <th>ID</th>
                    <th>Nome</th>
                    <th>Email</th>
                </tr>
                <div id="checkbox"></div>
            </thead>
            <tbody>
            </tbody>
        </table>
    </div>
    </div>

<script>

$.ajax({
    type: 'GET',
    //async: false,
    url: 'https://app.myurl.com/reservas',
    success:function(reservas){

        reservas.forEach (function (reserva) {
            var reservas = [];


            reservas.push('<tr class="reservas">');
            reservas.push('<td> <input type="checkbox" id="salvar"/> </td>');
            reservas.push('<td>' + reserva._id + '</td>');
            reservas.push('<td>' + reserva.nome + '</td>');
            reservas.push('<td>' + reserva.email + '</td>');
            reservas.push('</tr>');

            $('tbody').append(reservas.join(""));

        })
    },
    error:function(e){
        console.log(e);
    }
});

他们在点击事件中有 PUT 请求。

$(function(){
    $('body').on('click', '#salvar', function(){
       alert('Salvo!');

       $.ajax({

            type: 'PUT',
            url: 'http://localhost/datas',
            //async: false,
            data: {
                id: reserva._id,
                nome: reserva.nome,
                email: reserva.email
            },
            sucess:function (success) {
                console.log('success')
            },
            error:function(err) {
                console.log(err);
            }
        });
    });
});






</script>

如果你能指导我,我很感激 =)

非常感谢。

【问题讨论】:

  • 这两个文件在哪里?
  • 在我的 html.index 中,在正文结束之前,Kumar.. GET 请求运行良好,因为我从其他 URL 获取数据并将其排列在 html 中..跨度>
  • 叫我普拉文。哦,但这只能在 AJAX 调用之后访问。您可以将完整的代码发布在 jsfiddle 中吗?
  • 您要么需要创建一个变量,该变量将在这两种方法的范围内,并将其值设置为保留,要么您必须使用 jQuery 从 DOM 获取数据。两者都行。
  • 您似乎也在GET - forEach 中重新声明reservas

标签: jquery events click put


【解决方案1】:

您在这里不需要全局变量,因为GET 返回了许多潜在的reserva,但是您可以将变量声明为global,方法是在您之前的任何其他函数和代码之外声明它GET 像这样:

var myGlobalReserva;
// Then all your other code here.

您实际上想要做什么我猜如下,使用“数据属性”http://api.jquery.com/data/ 将相关数据存储在特定的“保留”上,然后将其附加到 DOM。请注意,具有相同 ID 的元素超过 1 个是无效的,因此我将其更改为 class="salvar"。然后在“PUT”中,您将获得数据属性值。

$.ajax({
    type: 'GET',
    //async: false,
    url: 'https://app.myurl.com/reservas',
    success:function(reservas){

        reservas.forEach (function (reserva) {
            var reservasHTML = [];


            reservasHTML.push('<tr class="reservas">');
            reservasHTML.push('<td> <input type="checkbox" class="salvar" data-id="' + reserva._id + '" data-nome="' + reserva.nome + '" data-email="' + reserva.email + '"/> </td>');
            reservasHTML.push('<td>' + reserva._id + '</td>');
            reservasHTML.push('<td>' + reserva.nome + '</td>');
            reservasHTML.push('<td>' + reserva.email + '</td>');
            reservasHTML.push('</tr>');

            $('tbody').append(reservas.join(""));

        })
    },
    error:function(e){
        console.log(e);
    }
});


$(function(){
    $('body').on('click', '.salvar', function(){
       alert('Salvo!');
       var clickedBox = $(this);

       $.ajax({

            type: 'PUT',
            url: 'http://localhost/datas',
            //async: false,
            data: {
                id: clickedBox.data('id'),
                nome: clickedBox.data('nome'),
                email: clickedBox.data('email')
            },
            sucess:function (success) {
                console.log('success')
            },
            error:function(err) {
                console.log(err);
            }
        });
    });
});

【讨论】:

  • 非常感谢!
猜你喜欢
  • 1970-01-01
  • 2010-10-10
  • 2014-02-07
  • 2016-09-18
  • 1970-01-01
  • 2010-12-11
  • 2018-09-04
  • 2013-07-12
  • 2021-11-23
相关资源
最近更新 更多