我试图实现一个包含字符串化(?)对象的简单jQuery ajax帖子。我通过收集我打算在注册页面上发布的信息然后使用JSON.stringify并将对象存储在cookie中来实现这一目标。注册成功后,对象将发布在下一页的ajax帖子的data参数中。
到目前为止一切顺利。发布成功后,API接收对象并解释数据。但是,当用户导航回此页面(包含其用户信息)并设置了Cookie时,会再次发送帖子请求,并且每次他们点击页面时都会再次发送。
我想要达到这样的目标:
if(CMjar.getKeys().indexOf('registerSession') != -1) { //if cookie exists
$.ajax({
url: 'API URL',
type: 'POST',
data: stringyObjS,
dataType: 'json',
}) // post the request
.done(function() { //once posted
CMjar.remove('registerSession'); //delete the cookie
});
console.log('posted');
}; // if cookie doesn't exist don't do anything
在控制台中工作时,CMjar.remove函数按预期工作,cookie已消失,但不会被.done调用。有任何想法吗?我应该使用suceess:?
我也尝试了以下内容:
$.ajax({
url: 'API URL',
type: 'POST',
data: stringyObjS,
dataType: 'json',
}); // post the data
CMjar.remove('registerSession'); // delete the cookie
这在删除cookie的意义上是有效的,虽然我应该在发送帖子请求时收到语法错误(我没有复制这个,因为这样就不能逐字引用错误)
我是否在正确的轨道上?我是傻瓜吗?请帮忙!
谢谢, 迈尔斯
答案 0 :(得分:0)
所有已排序 - 我必须遇到语法错误,导致post请求无法正常工作,只是尝试删除没有.done函数的cookie,并且它可以正常工作。
对于那些感兴趣的人,这是我的解决方案:
**注册页面**
$('.marg-bottom .button').click(function() {
var postMobEmailOpt;
if ($('#usxtsubscribesms').is(':checked')) {
postMobEmailOpt = 'I';
} else {
postMobEmailOpt = 'O';
};
var obj= {
type: 'mergeListMembers',
source: 'registrationForm',
EMAIL_FORMAT_: 'H',
TITLE: $('#title').val(),
FIRST_NAME: $('#fname').val(),
LAST_NAME: $('#lname').val(),
COUNTRY_: $('#cntrylist').val(),
POSTAL_CODE_: $('#zipc').val(),
HOUSE_NUM: $('#num').val(),
POSTAL_STREET_1_: $('#addr1').val(),
POSTAL_STREET_2_: $('#addr2').val(),
CITY_: $('#city').val(),
COUNTY: $('#statetext').val(),
MOBILE_NUMBER_: $("input[name='usxusxtmobile']").val(),
EMAIL_ADDRESS_: $('#usemail').val(),
GENDER: $('#usxusxtgender').val(),
DATE_OF_BIRTH: $('#usxusxtbirthdate').val() + '-' + $('#usxusxtbirthmonth').val() + '-' + $('#usxusxtbirthyear').val(),
POSTAL_PERMISSION_STATUS_: postMobEmailOpt,
MOBILE_PERMISSION_STATUS_: postMobEmailOpt,
EMAIL_PERMISSION_STATUS_: postMobEmailOpt
}
var CMjar = new CookieJar( {expires: '', path: '/'} );
CMjar.put('registerSession', JSON.stringify(obj));
});
})
**帐户页面(在注册后导航到**
jQuery( document ).ready(function( $ ) {
var CMjar = new CookieJar( {expires: '', path: '/'} ),
stringyObj = CMjar.get('registerSession'),
stringyObjS = $.parseJSON(stringyObj);
if(CMjar.getKeys().indexOf('registerSession') != -1) {
$.ajax({
url: 'URL',
type: 'POST',
data: stringyObjS,
dataType: 'json',
});
CMjar.remove('registerSession');
};
});