如何通过ajax发送全局变量?

时间:2014-06-30 14:42:18

标签: javascript jquery ajax

好的,所以我有这两个功能。在第一个函数中,我更改了全局变量repined的值,之后,我调用ajax post并在其中发送参数。

在第二个函数上,我调用相同的ajax post并尝试发送与我在第一个上发送的值相同的值。但由于某种原因,不断发送未定义的变量。

var window.repinId = 0;

function pinEvent(pinId) {
    window.repinId = pinId;
    $.post( "/pin/create?from=repin&pinId="+pinId )
        .done(function (data) {
            $('#modal-pin-it .modal-body').html(data);
            $('#modal-pin-it').modal('show');
        })
        .fail(function () {
            console.log('fail!');
        });
    }


function submitPin(repinId) {
    $.post( "/pin/create?from=repin&pinId="+window.repinId, $("#createForm").serialize())
    .done(function (data) {

        $('#modal-pin-it').slideUp('fast', function () {
            $('#modal-pin-it .modal-body').empty();
            $('#modal-pin-it .modal-body').html(data);
        });
        $('#modal-pin-it').slideDown();
        $('#submit-pin').prop('disabled', true);
        $('#submit-pin').hide();
    })
    .fail( function () {
        console.log('fail!');
    });
}

2 个答案:

答案 0 :(得分:1)

在对象内声明变量 var window.repinId = 0; 实际上是无效的语法。 要在全局上下文中声明变量,您需要使用 window.repinId = 0; 要不就 repinId = 0;如果您已经处于全球范围内。 请注意,使用全局变量通常是不好的做法。

答案 1 :(得分:0)

使用第二个参数

var data = $("#createForm").serializeArray();
data.push('from', 'repin');
data.push('pinId', repinId);

$.post("/pin/create", data).done(function(data) {
    // ...
});

来自jQuery Docs

$.post( "test.php", { name: "John", time: "2pm" })
.done(function( data ) {
    alert( "Data Loaded: " + data );
});