вызов ajax в обработчике почты - PullRequest
1 голос
/ 06 июля 2011

Мне нужно сделать пост после успеха другого поста, но в Internet Explorer это не работает.Предлагать?

Похоже, что вызов $ .ajax в lwaAjax_getrsp работает со всеми браузерами, но не с ie.

$('#LoginWithAjax_Register form').submit(function(event){
    //Stop event, add loading pic...
    event.preventDefault();
    $('<div class="LoginWithAjax_Loading" id="LoginWithAjax_Loading"></div>').prependTo('#LoginWithAjax_Register');
    //Sort out url
    var url = $('#LoginWithAjax_Register form').attr('action');
    //Get POST data
    var postData = getPostData('#LoginWithAjax_Register form *[name]');
    $.post(url, postData, function(data){
        lwaAjax_getrsp(postData, data, 'LoginWithAjax_Register_Status', '#LoginWithAjax_Register' );            
    }, "json");
}); 

function lwaAjax_getrsp(posteddata, data, statusElement, prependTo ){
    $('#LoginWithAjax_Loading').remove();
    if( data.result === true || data.result === false ){
        if(data.result === true){
            //Login Successful
            var dataString_getrsp = 'name='+ posteddata['user_login'] + 
                                    '&email=' + posteddata['user_email'] +
                                    '&webform_id=' + 00001;
            $.ajax({
                  type: 'POST',
                  url: "http://www.getresponse.com/add_contact_webform.html",
                  data: dataString_getrsp,
                  success: function(data){
                      $('#result2').html("<h2>"+data+"</h2>");
                  }
            })

            if( $('#'+statusElement).length > 0 ){
                $('#'+statusElement).attr('class','confirm').html(data.message);
            }else{
                $('<span id="'+statusElement+'" class="confirm">'+data.message+'</span>').prependTo( prependTo );
            }
        }else{
            //Login Failed
            //If there already is an error element, replace text contents, otherwise create a new one and insert it
            if( $('#'+statusElement).length > 0 ){
                $('#'+statusElement).attr('class','invalid').html(data.error);
            }else{
                $('<span id="'+statusElement+'" class="invalid">'+data.error+'</span>').prependTo( prependTo );
            }

            var newrecoverylink = $('#custom_recovery_password').attr('href');
            $('#LoginWithAjax_Status a').attr('href',newrecoverylink);
        }
    }else{  
        //If there already is an error element, replace text contents, otherwise create a new one and insert it
        if( $('#'+statusElement).length > 0 ){
            $('#'+statusElement).attr('class','invalid').html('An error has occured. Please try again.');
        }else{
            $('<span id="'+statusElement+'" class="invalid">An error has occured. Please try again.</span>').prependTo( prependTo );
        }
    }
}

Кажется, проблема не в вызове ajax в обработчике, нопосле нового анализа на внешнем домене, возможно, что то есть блокировать вызов ajax на внешние домены?

Как обойти?Спасибо всем!

Это не работает, и alert2 не отображаются.

 $('#LoginWithAjax_Register form').submit(function(event){
    //Stop event, add loading pic...
    event.preventDefault();
    $('<div class="LoginWithAjax_Loading" id="LoginWithAjax_Loading"></div>').prependTo('#LoginWithAjax_Register');
    //Sort out url
    var url = $(this).attr('action');
    //Get POST data
    var postData = getPostData('#LoginWithAjax_Register form *[name]');
    $.post(url, postData, function(data){
        lwaAjax_getrsp(postData, data, 'LoginWithAjax_Register_Status', '#LoginWithAjax_Register' );            
    }, "json"); 

    window.alert("1");

    $.post('http://www.getresponse.com/add_contact_webform.html', postData, function(data){         
    }, "jsonp");

    window.alert("2");  

});

Этот работает.

    $('#LoginWithAjax_Register form').submit(function(event){
    //Stop event, add loading pic...
    event.preventDefault();
    $('<div class="LoginWithAjax_Loading" id="LoginWithAjax_Loading"></div>').prependTo('#LoginWithAjax_Register');
    //Sort out url
    var url = $(this).attr('action');
    //Get POST data
    var postData = getPostData('#LoginWithAjax_Register form *[name]');
    $.post(url, postData, function(data){
        lwaAjax_getrsp(postData, data, 'LoginWithAjax_Register_Status', '#LoginWithAjax_Register' );            
    }, "json"); 

    window.alert("1");

    $.post('/', postData, function(data){           
    }, "jsonp");

    window.alert("2");  

}); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...