我有一个奇怪的JavaScript问题:当我在带有window.location的行上使用断点(Firebug)运行我的JavaScript时,我的函数正常工作。但是当我把断点拿走时,它再也不起作用了。它表现得好像它不再执行savePublication()函数。
有人见过这样的问题吗?这是我的代码
$("#add").click(function (e) {
// Create array with id values of checked checkboxes
var idarray = $( "input:checked" )
.map(function() { return $(this).attr("class"); }) //Project classes
.get(); //to Array
// save each checked publication to database
$.each(idarray, function(index, value) {
savePublication(value);
});
// load new window
var uid = $( '[name="user_id"]' ).val();
window.location.href = BASE + '/cv/' + uid+'?panel=accordion_8';
});
在cas中这对解决问题很重要,这里的函数savePublication()为:
function savePublication(c) {
// set variables
var author;
var title;
var year;
var subtitle;
var user_id = $( '[name="user_id"]' ).val();
// for each element with class = c
$("."+c).each(function() {
// get element name
var attribute = $(this).attr("name");
// get values of attributes and set new variables with values
if(attribute === "author") author = htmlspecialchars_decode($(this).text());
if(attribute === "contributor") contributor = $(this).text();
if(attribute === "title") title = $(this).text();
if(attribute === "year") year = $(this).text();
});
// variable joining authors and contributors
var authors = author + ", " + contributor;
// store data using appropriate route
$.post(BASE + '/publication/storeWorldCat',
{
authors: authors,
title: title,
subtitle: "à corriger dans addWorldCat.js",
year: year,
user_id: user_id,
},
function(data,status){
alert("Data: " + data + "\nStatus: " + status);
});
感谢您的帮助!
答案 0 :(得分:1)
一旦你转到另一个页面,JavaScript就会停止执行。
您的$.post
应该已经发生,但成功可能会也可能不会执行,具体取决于$.post
需要多长时间。
当您放置断点时,$ .post结束并执行成功回调。
您可以通过设置async: false
或等待$ .post来解决此问题:
$.post(BASE + '/publication/storeWorldCat',
{
authors: authors,
title: title,
subtitle: "à corriger dans addWorldCat.js",
year: year,
user_id: user_id,
},
function(data,status){
alert("Data: " + data + "\nStatus: " + status);
}).done(function() {
window.location = "...";
});
的更多信息,请参见此处
答案 1 :(得分:0)
您可以像这样同步调用控制器:
var data = {
authors: authors,
title: title,
subtitle: "à corriger dans addWorldCat.js",
year: year,
user_id: user_id,
};
var success = function(data,status){
alert("Data: " + data + "\nStatus: " + status);
});
$.ajax({
type: 'POST',
url: BASE + '/publication/storeWorldCat',
data: data,
success: success,
dataType: dataType,
async:false
});