AJax技术

thinkphp ajax 异步 局部 刷新(3)

字号+ 作者:H5之家 来源:H5之家 2017-09-11 18:00 我要评论( )

2、点击查询form的提交,触 发js自定义的submit事件,在submit函数中对获取的表单数据检测后如果符合要求就传递给控制器,控制器从数据库获取结果数组后返回给ajax的success。对返回给ajax的结果数组,可以创建一个

2、点击查询form的提交,触 发js自定义的submit事件,在submit函数中对获取的表单数据检测后如果符合要求就传递给控制器,控制器从数据库获取结果数组后返回给ajax的success。对返回给ajax的结果数组,可以创建一个refresh()函数,或直接在success中用jQuery(或其他js)操纵结果table(DOM),比如删除tbody节点下的所有内容,并将结果数组格式化后添加到tbody下面。

举例:

//1、php中的form表单

<div tabindex="-1" role="dialog">

......

<form>

<fieldset>

......

<button type="button" >提交更改</button>

......

</fieldset>

</form>

</div>

//2、js校验表单并发起ajax

function add_engineer_modal_check_value() {

    //以edit_modal_check_value()为模板

    var serialize_array_object = $("#add_engineer_modal_form").mySerializeArray();

    var data = change_serialize_to_json(serialize_array_object);

    var check_results = [];

    check_results['result'] = [];//保存错误信息

    check_results['data'] = data;//保存input和select对象

    //check_employee_number是自定义判断员工号函数。

    if (check_employee_number(data['employee_number']) == false)

    {

        check_results['result'].push("请输入有效的员工号(可选)");

    }

    return check_results;

}

function add_engineer_modal_submit() {

    var check_results = add_engineer_modal_check_value();

    if (check_results['result'].length == 0)

    {

        var json_data = JSON.stringify(check_results['data']);   //JSON.stringify() 方法将一个JavaScript值转换为一个JSON字符串(ajax要求json对象或json字符串才能传输)

        $.ajax({

            type: 'POST',

            url: add_engineer_url, //在php中全局定义url,方便使用thinkphp的U方法

            data: {"json_data": json_data},            //ajax要求json对象或json字符串才能传输,json_data只是json字符串而已

            dataType: "json",

            success: function (data) {

                console.log("数据交互成功");

            },

            error: function (data) {

                console.log("数据交互失败");

            }

        });

    }

    else

    {

        //弹出错误提示alert

    }

    return 0;

}

3、控制器返回数组给js

public function add_engineer() {

if (IS_AJAX)

{

$posted_json_data = I('post.json_data');

$posted_json_data_replace = str_replace('"', '"', $posted_json_data);

$posted_json_data_replace_array = (Array)json_decode($posted_json_data_replace);

   

   //处理数据库事务写入,通过判断写入结果来区分ajaxReturn的结果

  //可以将所有想要返回的数据放在一个数组中,比如新增的行id、插入数据库的操作是否成功

  //如果操作数据库成功就返回如下结果。

   $user_table->commit();

$data['result'] = true;

$data['pk_user_id'] = $data_add_user_result;

$this->ajaxReturn($data);

return 0;

}

}

改写js:

在js的ajax中,如果整个ajax正常交互,就会走success函数,否则会走error函数,一般情况下,error出现的原因都是传输的数据不符合要求。

在success中的data就是ajaxReturn中传输的数组,举例:

success: function (data) {

                if (data['result'] == false)

                {

                    alert(data['alert']);

                }

                else

                {

                    $('#add_engineer_modal').modal('hide');

                    $('#user_list_table tr').eq(0).after('<tr></tr>');

                    //这里就可以使用data['pk_user_id']了。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  •  Ajax学习札记01-简单实现数据异步交互

    Ajax学习札记01-简单实现数据异步交互

    2017-09-02 15:00

  • 标签:[ ajax ] 列表

    标签:[ ajax ] 列表

    2017-08-30 09:03

  • [APICloud | APP开发技巧]api.ajax请求耗时测试用例

    [APICloud | APP开发技巧]api.ajax请求耗时测试用例

    2017-08-19 18:01

  • 第46课:ASP.NET MVC异步AJAX请求部分视图(PartialViewResult)

    第46课:ASP.NET MVC异步AJAX请求部分视图(PartialViewResult)

    2017-08-15 14:02

网友点评