AJAX

新简易ajax辅助类

(function(){

    var wct = window.wct = window.wct || {};

    wct.host = "http://localhost:8090";
    
    wct.api = {
       'menu':'/ajax/menu/',
       'desk':'/ajax/desk/'
    };

    wct.AjaxGet = function(api,callback){
        $.ajax({
            type:"POST",
            url:api,
            dataType:"json",
            success:function(json){
                callback && callback(json);
            }
        });
    }

    wct.AjaxPost = function(api,datas,callback){
        $.ajax({
            type:"POST",
            url:api,
            data: datas,
            dataType:"json",
            success:function(json){
                callback && callback(json);
            }
        });
    }

})();

 

Ajax基本格式

$.ajax({
    type: "POST",
    url: "Ajax.aspx",
    data: {
        openid: openid,
        type: "EduShouXinPanDuan"
    },
    success: function(data) {
        var json = JSON.parse(data);
        var Status = json.Status;
        var Result = json.Result;
        var Msg = json.Msg;
        if (Status == "成功") {} else if (Status == "失败") {}
    }
})

 

全局AJAX

completesuccesserror 触发后触发

在实战中,几乎必须重载 success.所以这里就不书写了

这里加入 layer插件,可以达到很好美化效果  

Ajax_全局设置 = function ()
{
    $.ajaxSetup
    ({
        //公共参数
        timeout: 10000,
        type: "POST",

        //发送请求前触发
        beforeSend: function (xhr)
        {
            layer.load(0, { shade: [0.5, '#fff'] });
            console.log("AJAX请求发送之前beforeSend_xhr:");
            console.log(xhr);
        },      //请求失败遇到异常触发
        error: function (xhr, status, e)
        {
      

          //error的第一个参数xhr.responseText 可以打印出后台的错误信息。

        alert(xhr.responseText);

       if(status == "error")
            {
                alert("请求错误");
            }
if (status == 'timeout') { layer.open({ type: 0, content: "超时了,喵呜~", icon: 5, closeBtn: 2, btn1: function (index) { layer.closeAll() }, end: function () { layer.closeAll() } }); } else //其他错误情况以后调试过程中认知并且加入 { layer.open({ type: 0, content: "处理失败,喵呜~", icon: 5, closeBtn: 2, btn1: function (index) { layer.closeAll() }, end: function () { layer.closeAll() } }); } console.log("AJAX出错了error_xhr:"); console.log(xhr); console.log("AJAX出错了error_status:"); console.log(status); console.log("AJAX出错了error_e:"); console.log(e); }, //完成请求后触发。即在success或error触发后触发 complete: function (xhr, status) { layer.closeAll('loading'); console.log("AJAX已完成_xhr"); console.log(xhr); console.log("AJAX已完成_status:"); console.log(status); }, }) }

 

参数序列化 serializeArray()

如果是可选控件,如selectradio 必须是处于勾选状态(非Checked状态)。

控件必须是可用的disabled = true

$("input:checkbox:visible").each(function ()
{
    if (!$(this).is(':checked'))
    {
        $(this).click().removeAttr("disabled"); 
    }
})

var data = $("input:checkbox[name='SNID_PK']:checked").serializeArray();

 

AjaxHelper

基于$.ajax声明一个简单的AjaxHelper构造器,AjaxHelper构造器的原型对象包含5个方法,分别用于处理GET, POST, PUT, DELETE和JSONP请求。

function AjaxHelper() {
    this.ajax = function(url, type, dataType, data, callback,jsonpCallback = "") {
        $.ajax({
            url: url,
            type: type,
            dataType: dataType,
            data: data,
            jsonpCallback: jsonpCallback,
            success: callback,            
            error: function(xhr, errorType, error) {
                alert('Ajax request error, errorType: ' + errorType +  ', error: ' + error)
            }
        })
    }
}
AjaxHelper.prototype.get = function(url, data, callback) {
    this.ajax(url, 'GET', 'json', data, callback)
}
AjaxHelper.prototype.post = function(url, data, callback) {
    this.ajax(url, 'POST', 'json', data, callback)
}

AjaxHelper.prototype.put = function(url, data, callback) {
    this.ajax(url, 'PUT', 'json', data, callback)
}

AjaxHelper.prototype.delete = function(url, data, callback) {
    this.ajax(url, 'DELETE', 'json', data, callback)
}

AjaxHelper.prototype.jsonp = function(url, data, callback , jsonpCallback) {
    this.ajax(url, 'GET', 'jsonp', data, callback , jsonpCallback)
}

AjaxHelper.prototype.constructor = AjaxHelper

export default AjaxHelper

 

使用:

  // 导入AjaxHelper
  import AjaxHelper from './AjaxHelper'
  
// get方式请求 let callback = function(data){ console.log(data); } var ajaxHelper = new AjaxHelper() ajaxHelper.get("http://localhost:9090", null, callback);
// jsonp方式   let jsonp2 = function(data){ console.log(data); } ajaxHelper.get("http://localhost:9090", null, callback, "jsonp2");

 PHP示例

<?php 
header('Content-type: application/json');
header("Access-Control-Allow-Origin:*");


//获取回调函数名  
$callback = $_REQUEST ['callback']; 

if($callback != null)
{
    $json = "jsonp success";
    
    echo $callback ."(\"$json\")";  exit();
    
}
else
{
    $arr = array();
    $arr[0]["moiveName"] = "美国队长3内战";
    $arr[1]["moiveName"] = "X战警3天启";
    $arr[2]["moiveName"] = "大鱼海棠";

    $arr[0]["id"] = "1";
    $arr[1]["id"] = "2";
    $arr[2]["id"] = "3";

    $arr[0]["info"] = "奥创纪元之后,全球政府联合颁布法令,管控超能力活动。对这条法令的不同态度,使复仇者阵营一分为二,钢铁侠和美国队长各据一方,其他复仇者则不得不做出自己的选择,最终引发前任盟友间的史诗大战。";
    $arr[1]["moiveName"] = "该片故事以20世纪80年代为背景,讲述了古老强大的第一个变种人天启在埃及醒来,他想统治并改变这个世界,而引发一系列变种人大战的故事";
    $arr[2]["moiveName"] = "所有人类的灵魂都是海里一条巨大的鱼,出生的时候从海的此岸出发,在路途中,有时相遇,有时分开,死的时候去到海的彼岸,之后变成一条沉睡的小鱼,等待多年后的再次出发,这个旅程永远不会结束,生命往复不息。十六岁生日那天,居住在“神之围楼”里的一个名叫椿的女孩变作一条海豚到人间巡礼,被大海中的一张网困住,一个人类男孩因为救她而落入深海死去。为了报恩,为了让人类男孩复活,她需要在自己的世界里,历经种种困难与阻碍,帮助死后男孩的灵魂——一条拇指那么大的小鱼,成长为一条比鲸更巨大的鱼并回归大海";

    $arr[3]["callback"] = $callback;

    exit(json_encode($arr));
}

 

 

 

posted @ 2016-03-26 21:57  贝尔塔猫  阅读(284)  评论(0)    收藏  举报