分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 技术分享

Ajax JS

发布时间:2023-09-06 01:32责任编辑:顾先生关键词:Ajax

Ajax

AJAX 最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。

AJAX 不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。

  • ajax(本质;推荐)

     ?$.ajax({ ?????url: "/test_ajax", ?????type: ‘POST‘, ?????// data: {‘k1‘: 123, ‘k2‘: ‘aa}, ?data: $(‘#add_form‘).serialize(), # form表单打包发给服务器端 ?// data是服务器端返回的字符串 ?????success: function(data){ ?var obj = JSON.parse(data); ???????..... ?????} ?})
  • $.get(url=‘xx‘, data={}, success=xxx)

    • 实际调用ajax,type为get
  • $.getJson

  • $.post

    • 实际调用ajax,type为post
  • app的views.py

    • return HttpResponse(json.dumps(字典)) # 推荐
    • return render(xxx) # 仅能返回对象类型,例如字典、列表、元组
    • return redirect(xxx) # 不用,用了也没效果,ajax不刷新

举例1

html文件<a id="ajax_submit" >悄悄提交</a><input id="host" type="text" placeholder="主机名" name="hostname" /><script>$(‘#ajax_submit‘).click(function(){ ???????????????$.ajax({ ???????????????????url: "/test_ajax", ???????????????????type: ‘POST‘, ???????????????????// data: {‘hostname‘: $(‘#host‘).val(), ‘ip‘: $(‘#ip‘).val(), ‘port‘: $(‘#port‘).val(), ‘b_id‘: $(‘#sel‘).val()},data: $(‘#add_form‘).serialize(), ???????????????????success: function(data){ ??????????????????????if (data == ‘OK‘){ ??????????????????????????location.reload() ???????????????????????}else{ ??????????????????????????alert(data) ??????????????????????} ???????????????????} ???????????????}) ????????});</script>工程中urls.pyurl(r‘^test_ajax$‘, views.test_ajax),app中的views.pydef test_ajax(request): ???h = request.POST.get(‘hostname‘) ???i = request.POST.get(‘ip‘) ???p = request.POST.get(‘port‘) ???b = request.POST.get(‘b_id‘) ???if h and len(h) > 5: ???????models.Host.objects.create(hostname=h, ??????????????????????????????????ip=i, ??????????????????????????????????port=p, ??????????????????????????????????b_id=b) ???????return HttpResponse(‘OK‘) ???else: ???????return HttpResponse("太短了")缺陷:数据类型错误,用户不感知

举例1:(改善)

html文件<span id="erro_msg" style="color: red"></span><script>$(‘#ajax_submit‘).click(function(){ ???????????????$.ajax({ ???????????????????url: "/test_ajax", ???????????????????type: ‘POST‘, ???????????????????// data: {‘hostname‘: $(‘#host‘).val(), ‘ip‘: $(‘#ip‘).val(), ‘port‘: $(‘#port‘).val(), ‘b_id‘: $(‘#sel‘).val()},data: $(‘#add_form‘).serialize(), ???????????????????success: function(data){ ??????????????????????var obj = JSON.parse(data); ???????????????????????if(obj.status){ ???????????????????????????location.reload(); ???????????????????????}else{ ???????????????????????????$(‘#erro_msg‘).text(obj.error); ???????????????????????} ???????????????????} ???????????????}) ????????}); ???</script>app中的views.pydef test_ajax(request): ???ret = {‘status‘: True, ‘error‘: None, ‘data‘: None} ???try: ???????h = request.POST.get(‘hostname‘) ???????i = request.POST.get(‘ip‘) ???????p = request.POST.get(‘port‘) ???????b = request.POST.get(‘b_id‘) ???????if h and len(h) > 5: ???????????models.Host.objects.create(hostname=h, ip=i, port=p, b_id=b) ???????else: ???????????ret[‘status‘] = False ???????????ret[‘error‘] = "太短了" ???except Exception as e: ???????ret[‘status‘] = False ???????ret[‘error‘] = ‘请求错误‘ ???return HttpResponse(json.dumps(ret))

JS

  • 字符串转对象

    var obj = JSON.parse(data);

  • 对象转字符串

    JSON.stringify([1,2, 3])

  • json对象,通过点操作

  • 页面刷新

    location.reload();

  • 获取对象值

    $(‘#edit_form‘).find(‘select‘).val();

  • 设置对象值

    $(‘#edit_form‘).find(‘select‘).val("4");

    $(‘#edit_form‘).find(‘select‘).val(1);

  • 绑定事件

    • class

       ?<tr hid="{{ row.nid }}" bid="{{ row.b_id }}"> ?<td> ?<a class="edit">编辑</a>|<a class="delete">删除</a> ?</td> ?</tr> ???<script> ??$(‘.edit‘).click(function(){ ?????????$(‘.shade,.edit-modal‘).removeClass(‘hide‘); ???????????var bid = $(this).parent().parent().attr(‘bid‘); ?????????var nid = $(this).parent().parent().attr(‘hid‘); ???????????$(‘#edit_form‘).find(‘select‘).val(bid); ?????????$(‘#edit_form‘).find(‘input[name="nid"]‘).val(nid); ?}) ?</script>
    • id

       ?<a id="ajax_submit" >悄悄提交</a> ?<script> ??$(‘#ajax_submit‘).click(function(){ ?.... ??}); ?</script>
    • 举例

       ?CSS ?<style> ?????????.hide{ ?????????????display: none; ?????????} ?????????.shade{ ?????????????.... ?????????} ?????????.add-modal,.edit-modal{ ?????????????.... ?????????} ?????</style> ?html ?<input id="add_host" type="button" value="添加" /> ?<div class="shade hide"></div> ?????<div class="add-modal hide"> ?????????<h3>添加主机信息</h3> ?</div> ?JS ?<script> ??$(function() { ??????????????$(‘#add_host‘).click(function () { ??????????????????$(‘.shade,.add-modal‘).removeClass(‘hide‘); ??????????????}); ??}); ?</script>

Ajax JS

原文地址:https://www.cnblogs.com/todayisafineday/p/8127924.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved