如何触发回调jquery 3.1.0

时间:2017-01-31 06:48:29

标签: javascript php jquery ajax

我喜欢的是处理.fail()&的最佳方法。当我的ajax请求返回一个我解析的assoc数组时,.done()

这是我当前的代码,我目前的问题是.fail()。总是开火。

注意:我测试了我的something.php,当它失败或成功时给我正确的回复这是我对something.php

的实际回复

失败:

{
  "ac":"failed"
}

成功:

{
  "alias": "cd9d0e2e",
  "sso": "http://somethin.com/home/site/cd9d0e2e?dm_sso=2!dsa654654sa56d FGfre4f645465fTIxYWE3NGZkMzk0NGM3NzIyMWFhNWQyMTgifQ",
  "ru": "http://somethin.com/login/resetpwd?uuid=asd1as3d1as321d-4370-be5d-123a3s2d1a3sd13a2s",
  "ac": "something@sample.com",
  "fn": "Fish",
  "ln": "Fillet"
}



$(document).ready(function(){
    $('#btn-create').click(function(e){
       e.preventDefault();
       var cSite = createSite();
       cSite.done(sendMail).fail(failOption).always(alwaysOption);
    }
});

function createSite() {
     var promise = $.Deferred();
     $.ajax({
             url: 'something.php',
             method: 'POST',
         data:"template_id="+template_id+"&original_url="+original_url+"&email="+email+"&first_name="+first_name+"&last_name="+last_name
            }).then(function(data) {
                var dataa = JSON.parse(data);
                //debugger;
                if(dataa.ac === 'failed') {
                    promise.reject(dataa);
                } else {
                    promise.resolve(dataa);
                }
            });

            return promise;
        }
function sendMail(dataa) {
console.log(dataa);
}

2 个答案:

答案 0 :(得分:0)

您可以返回promise表单createSite

var cSite = createSite();然后使用.then.done,。始终或.fail等。

$(document).ready(function() {
  $('#btn-create').click(function(e) {
    e.preventDefault();
    var cSite = createSite();
    cSite.done(function(resp) {
      var dataa = JSON.parse(resp);
      sendMail(dataa);
    }).fail(failOption).always(alwaysOption);
  });
});

function createSite() {
  var promise = $.ajax({
    url: 'something.php',
    method: 'POST',
    data: "template_id=" + template_id + "&original_url=" + original_url + "&email=" + email + "&first_name=" + first_name + "&last_name=" + last_name
  })
  return promise;
}

function sendMail(dataa) {
  console.log(dataa);
}

答案 1 :(得分:0)

好的,我现在弄清楚..这是现在有效的代码。

$(document).ready(function(){
    $('#btn-create').click(function(e){
            //debugger; 
            e.preventDefault();
                $(this).html('Creating Site');
                var template_id = $("#template_id").val();
                var original_url = $("#original_url").val();
                var email = $("#email").val();
                var first_name = $("#first_name").val();
                var last_name = $("#last_name").val();

                    $.ajax({
                        url: 'create-site-con.2.php',
                        method: 'POST',
                        data:"template_id="+template_id+"&original_url="+original_url+"&email="+email+"&first_name="+first_name+"&last_name="+last_name
                    }).done(function(resp) {
                        var dataa = JSON.parse(resp);
                             if (dataa.ac === "failed"){
                                failOption(dataa);
                              }
                             else{
                                 sendMail(dataa);
                              }
                    });

            });//click
            });//doc ready