jQuery ajax post after / success / delete cookie之后

时间:2014-10-03 09:41:24

标签: jquery ajax post cookies

我试图实现一个包含字符串化(?)对象的简单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的意义上是有效的,虽然我应该在发送帖子请求时收到语法错误(我没有复制这个,因为这样就不能逐字引用错误)

我是否在正确的轨道上?我是傻瓜吗?请帮忙!

谢谢, 迈尔斯

1 个答案:

答案 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');

};

});