好的,所以我有这两个功能。在第一个函数中,我更改了全局变量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!');
});
}
答案 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 );
});