点击发布按钮,如何用ajax发送这些数据到后台,希望有源码

图片说明mg.ask.csdn.net/upload/201512/10/1449737844_583917.png)
如何点击发布使用ajax发送到后台这么多数据,我只能发送一行的数据,所有行的要怎么发,后台要如何接收
//第一行数据
var _tr = $("tbody tr:eq(0)");
var sortNum = _tr.children().eq(0).text();
var photoId = _tr.children().eq(1).text();
var photoTitle = _tr.children().eq(2).text();
var updateTime = _tr.children().eq(3).text();
var updateUserName = _tr.children().eq(4).text();
var ynRelease = _tr.children().eq(5).text();

    ajax的date数据
        data:{
        "sortNum":sortNum,
        "photoId":photoId,
        "updateUserName":updateUserName,
        "ynRelease":ynRelease
    },

5个回答

var arrData=new Arry();
for(var i=0;i<10;i++)
{
var _tr = $("tbody tr:eq(i)");
var sortNum = _tr.children().eq(0).text();
var photoId = _tr.children().eq(1).text();
var photoTitle = _tr.children().eq(2).text();
var updateTime = _tr.children().eq(3).text();
var updateUserName = _tr.children().eq(4).text();
var ynRelease = _tr.children().eq(5).text();
var data={
_sortNum:sortNum,
_photoId:photoId,
_updateUserName:updateUserName,
_ynRelease:ynRelease
};
arrData[i]=data;
}

ajax的date数据
data: arrData,

ww6458753381
MYcsdn_Frank 回复qq_31634593: 下面再贴了回答,你也可以不厌其烦的把所有行数据去拼接一整个字符串s,data就只有一个属性d,值就是这个字符串s,然后服务端接收到你提交过来的d的值,也就是一个字符串,然后服务端把这个字符串反序列化成对象
大约 4 年之前 回复
qq_31634593
qq_31634593 想问一下大侠C层怎么解析这个json
大约 4 年之前 回复
qq_31634593
qq_31634593 想问一下大侠C层怎么解析这个json
大约 4 年之前 回复
qq_31634593
qq_31634593 厉害。大侠,有不懂的再问你
大约 4 年之前 回复
qq_31634593
qq_31634593 谢谢,我赶紧看一下
大约 4 年之前 回复

不知道你是不是想获得所有td里面的值,,还是什么,可以这样
var num=new Array();
$("tbody td").each(function(i,d){
num.push($(this).text());

});

Royal_lr
Royal_lr 回复qq_31634593: 感谢的话,,就采纳我的啊
大约 4 年之前 回复
qq_31634593
qq_31634593 恩恩非常感谢
大约 4 年之前 回复

我觉得你可以用数组接受 然后将数组传过去

图片说明

图片说明

测试代码和数据监控独有了服务端怎么接受,request[]清楚了吧,不知道你服务端什么语言不好贴代码,
你也可以写个函数专门序列化这种数据为对象

qq_31634593
qq_31634593 明白了,你是说的前端发送json格式的给后台,这样貌似比上一种方法更好解析一点
大约 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
发送ajax请求到后台获取的数据不能显示到弹框<div>中
点击按钮发送ajax请求到后台获取的数据,div能弹出来,但是下面的数据不显示,如下图(块里面为空,无数据,只有表头): ![图片说明](https://img-ask.csdn.net/upload/201511/23/1448285238_199006.jpg) 在html的<script>标签中的代码: ![图片说明](https://img-ask.csdn.net/upload/201511/23/1448285257_457694.jpg) 红框①中的数据都获取到了但是不显示到块中;粉框②是拼接的html,不显示数据的问题估计就出在这里,其他地方元素都显示正常。 我的逻辑是,从服务器取出的数据填进这个div中,但就是不显示。是不是还缺点什么?是异步的问题吗?
点击按钮 使用layui怎么打开一个textarea? 并点击确定向后台发送数据?求大神
![图片说明](https://img-ask.csdn.net/upload/201910/18/1571389330_631630.png) 如图,js怎么写啊?刚接触layui还不太会.部分js如下 ``` layui.config({ base: '/modules/' //静态资源所在路径 }).use(['jquery','layer','jmdf'], function () { var $ = layui.jquery,layer = layui.layer,jmdf = layui.jmdf; $("button[type=button]").click(function () { alert($(this).val()) }) ```
Spring MVC+Ajax,后台如何主动向前台传值?
各位大牛, 小弟新入行,自己在研究个WEB应用,遇到一些前后端交互的问题,特来向各位大牛寻求思路。 主要需求是: 前台页面,点击“开始获取”按钮后,SringMVC检测某个字段是否发生变化,如果变化,则主动向前台传递这个值(被检测的值每隔几秒会发生变化),页面上打印他。 目前不懂的地方是: 后台如何主动向前台传值?还不是前台发送GET指令,后台再返回数据。 换言之: 如果我的思路不对的话,怎样才能利用当前框架实现:后台监测某个字段。如果这个字段发生了变化,便立即将他先是在页面上? 感恩。
ajax后台代码重复执行
自己写个小程序,遇到个奇葩问题,在点击按钮发送ajax请求查询数据的时候,数据能正常显示,但是在火狐控制台有报错,报错原因是说语法错误,ajax返回内容为 "请求参数不正确!" 这句话是我在Controller层返回的.如果参数缺失才会提示这个.但是我检查后发现并不是参数缺失,而且请求被重复提交,第二次提交参数都丢失了,有点像被重定向了. 第一次数据有正常返回在页面显示,但是不知道为什么会又提交一次,并且网络请求里面只有一次请求!!! ![图片说明](https://img-ask.csdn.net/upload/201510/26/1445872837_367347.png) ![图片说明](https://img-ask.csdn.net/upload/201510/26/1445872910_705246.png) ![图片说明](https://img-ask.csdn.net/upload/201510/26/1445873454_929399.png) ![图片说明](https://img-ask.csdn.net/upload/201510/26/1445873561_584010.png) **js代码如下,触发是查询按钮的点击事件:** js代码检查过不可能重复执行; ``` function getData(startDate,endDate){ var rows=[]; $.ajax({ url:"queryAllUser.do", type:"POST", async:false, data:{'startDate':startDate,'endDate':endDate}, dataType:"json", success:function(data, textStatus){ for(var i=0;i<data.length;i++){ rows.push({ userId: "<a href=''>"+data[i].userId+"</a>", userName: data[i].userName, id: data[i].id, sex: data[i].sex, birthday: data[i].birthday, dateCreated: data[i].dateCreated, }); } } }); var tbodyHtml=""; for(var i=0;i<rows.length;i++){ tbodyHtml+= "<tr>"+ "<td>"+rows[i].userId+"</td>"+ "<td>"+rows[i].userName+"</td>"+ "<td>"+rows[i].id+"</td>"+ "<td>"+rows[i].sex+"</td>"+ "<td>"+rows[i].birthday+"</td>"+ "<td>"+rows[i].dateCreated+"</td>"+ "<td><a class='btn' data-trigger='confirm' href='#'><i class='icon-edit icon-large'></i> Update</a>&nbsp;"+ "<a class='btn' href='#'><i class='icon-trash icon-large'></i> Delete</a></td>"+ "</tr>" } if(rows.length==0){ tbodyHtml+= "<td colspan='7' class='active' style='text-align: center;'>没有指定时间段的数据!</td>" } $("#dataBody").html(tbodyHtml); } ``` **Controller层代码:** ``` @RequestMapping("/queryAllUser.do") public void queryAllUser(HttpServletRequest request ,HttpServletResponse response){ List allUserList; try { PrintWriter out = null; if(!checkParam(request, startDate)){ response.setCharacterEncoding(CommonStr.RETURN_CHARACTERENCODING ); out = response.getWriter(); out.write(CommonStr.CHECK_PARAM_ILLEGAL);//请求参数不合法! }else{ out = response.getWriter(); allUserList=userManagementService.queryAllUser(getParameter(request, startDate,endDate)); JSONArray jsonAry=JSONArray.fromObject(allUserList); out.write(jsonAry.toString()); } out.flush(); out.close(); } catch (IOException e) { e.printStackTrace(); } } ```
datagrid中怎么删除选中的行????
不管是多选,还是单选,在表格上集成的有增加,删除,修改按钮。我现在想问,当我点击某一行的时候,怎么取出来对应行的各个数据?????因为这个datagrid是个集成的框架,不是自己写的table,对里面的语法,还有数据对象取值不知道怎么用,如果能取出来值,我就可以用Ajax发送到后台进行处理。现在就问你,怎么去table对象,row对象,cell对象,语法是什么?????????????????????????????????
ajax phonegap 和 RESTful Codeigniter 问题
大家好 我现在准备用phonegap做一个安卓的app 现在需要做一个登录界面 有用户名密码 和提交按钮 当点击提交按钮 用ajax发送数据给 后台服务器 然后服务器返回true或者是false 如果是true跳入另外一个界面 如果是 false 弹出对话框提醒 现在问题是点击提交的时候一直显示ajax的error里面的 failed login。我觉得应该是url的问题 可是找了很久也不知道如何改: ajax代码: < script type="text/javascript"> $(document).ready(function() { $('#submit').click(function() { //Get data-theme data from all fields var username = $('#username').val(); var password = $('#password').val(); //Username and password can not be empty if(username =='') { alert('Please enter your username!'); return false; } if(password =='') { alert('Please enter your password!'); return false; } var form_data = { 'username': username, 'password': password }; //ajax code start here $.ajax ({ url: 'http://localhost/restserver/index.php/api/apiauth/auth', <!--//for test need to consolehange IP address here--> data: form_data, type: 'POST', cache: false, dataType: "json", error: function(XMLHttpRequest, textStatus, errorThrown) { alert('Failed to login'); console.log(JSON.stringify(XMLHttpRequest)); console.log(JSON.stringify(textStatus)); console.log(JSON.stringify(errorThrown)); }, success: function (data) { alert("Success login"); //$.mobile.changePage("index.html", "slideup"); } }); return false; }); }); </script> html部分: <div> <label for="username">Username</label> <input name="username" type="text" id="username" placeholder="Username"/> </div> <div> <label for="password">password</label> <input name="password" type="password" id="password" placeholder="Password"/> </div> <fieldset> <div><button name="submit" type="button" data-theme="b" id="submit">Login</button> </div> </fieldset> </div> 后台RESTful CI: <?php defined('BASEPATH') OR exit('No direct script access allowed'); require APPPATH.'/libraries/REST_Controller.php'; class Apiauth extends REST_Controller { function auth_get() { $this->load->model('membership_model'); $query=$this->membership_model->validate(); $this->response($query,200); } } <?php class Membership_model extends CI_Model { function validate() { $this->db->where('username',$this->input->post('username')); $this->db->where('password',$this->input->post('username')); $query=$this->db->get('membership'); if($query->num_rows=1) { return true; } else { return false; } } }
SpringMVC与jsp传值跳转
新人在做东西,最新想做一个跳转 a.jsp有按钮,按下之后会将json格式的参数值发送给后台的controller,然后controller经过处理会将这些json数据发送给b.jsp,b接收解析后展示出来 现在有几个问题在这里想让大家帮忙解答一下: 首先是a.jsp怎么发送数据给controller?我原先一直在使用jquery的ajax发送数据,但是这个样子无法实现跳转功能,并且a.jsp处于web-inf中并且是动态生成的,所以就被难住了 第二个问题是controller怎么再把数据发出去?我现在是使用ModelAndView,但是现在不能跳转我也不知道是否发送成功了 第三个问题是b.jsp怎么接受?我现在的想法是var a="${requestScope.message}" 但是不知道能不能成功,想让大家帮忙解决一下。先谢谢了
ssm框架下前后台交互实现邮箱发送功能
工具类 ``` package com.arvato.tools; import java.util.Date; import java.util.Properties; import javax.mail.Address; import javax.mail.Message; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import com.sun.mail.util.MailSSLSocketFactory; public class EmailUtil { //测试(OK) /* public static void main(String[] args){ try { sendEmail("13064845825@163.com", "好啊", "ssssssss"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }*/ public static void sendEmail(String toEmailAddress,String emailTitle,String emailContent)throws Exception{ Properties props = new Properties(); // 开启debug调试 props.setProperty("mail.debug", "true"); // 发送服务器需要身份验证 props.setProperty("mail.smtp.auth", "true"); // 设置邮件服务器主机名 props.setProperty("mail.host", "smtp.qq.com"); // 发送邮件协议名称 props.setProperty("mail.transport.protocol", "smtp"); /**SSL认证,注意腾讯邮箱是基于SSL加密的,所有需要开启才可以使用**/ MailSSLSocketFactory sf = new MailSSLSocketFactory(); sf.setTrustAllHosts(true); props.put("mail.smtp.ssl.enable", "true"); props.put("mail.smtp.ssl.socketFactory", sf); //创建会话 Session session = Session.getInstance(props); //发送的消息,基于观察者模式进行设计的 Message msg = new MimeMessage(session); msg.setSubject(emailTitle); //使用StringBuilder,因为StringBuilder加载速度会比String快,而且线程安全性也不错 StringBuilder builder = new StringBuilder(); builder.append("\n"+emailContent); builder.append("\n时间 " + new Date()); msg.setText(builder.toString()); msg.setFrom(new InternetAddress("970742915@qq.com")); Transport transport = session.getTransport(); transport.connect("smtp.qq.com", "970742915@qq.com", "********"); //发送消息 transport.sendMessage(msg, new Address[] { new InternetAddress(toEmailAddress) }); transport.close(); } } ``` Controller中代码 ``` @Controller public class SendEmailAction { /** * 发送邮件 * @return * @throws Exception */ @RequestMapping(value="/sendEmail.json" , method=RequestMethod.POST,produces="application/json;charset=UTF-8") @ResponseBody public Object sendEmail(HttpServletRequest request)throws Exception, ClassNotFoundException { Map<String,String> map = new HashMap<String,String>(); String msg = "ok"; //发送状态 String toEMAIL = "13064845825@163.com"; //对方邮箱 String TITLE = "成绩单"; //标题 String CONTENT ="你这次的考试成绩很棒"; //内容 EmailUtil.sendEmail(toEMAIL, TITLE, CONTENT); map.put("result", msg); return map; } } ``` js如下 ``` function goSendEmail(){ parent.layer.confirm('您确定要发送邮件吗?', { btn: ['确定','取消'], //按钮 shade: false //不显示遮罩 }, function(){ $.ajax({ type: "POST", title: '推送邮箱', url: ctx+ '/sendEmail.json?', data: {CONTENT:CONTENT,TITLE:TITLE,CONTENT:CONTENT}, dataType:'json', //beforeSend: validateData, cache: false, success: function(data){ if("ok" == data.result){ $("#msg").tips({ side:3, msg:'发送成功!', bg:'#68B500', time:5 }); }else{ $("#msg").tips({ side:3, msg:'发送失败!', bg:'#68B500', time:5 }); } } }); }, function(){ parent.layer.msg("已取消", {icon: 1}); return false; }); } ``` 前台代码段 ``` <button class="btn btn-success btn-primary" onclick="goSendEmail()"> <i class="fa fa-envelope-o"></i> 电子邮箱推送 </button> ``` 现在前台无法访问到后台数据 请问我这个问题出在哪?前后台交互这段不懂,求大神答疑,谢谢! 这个工具类没有问题已测试,可以正常发送的
ssm 框架已经实现,但是ajax返回验证有毛病
``` <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>js+ajax</title> <script type="text/javascript" src="static/bootstrap/js/jquery-2.0.3.js"></script> <script type="text/javascript"> function validate(){ var name= $("#name").val(); if(name==null||name==""){ //为空隐藏提交按钮 var ui =document.getElementById("tijiao"); ui.style.display="none"; //这里是简单的显示 不设计后台,前台做的判断 $("#namediv").html("用户名不可以为空"); }else{ //ajax实现 //11111111获取XMLhtmlRequestxml对象 var req=createXmlHttpRequest(); //222222222准备url 数据 回调函数 //这个name是function下面var的参数. var url="/maven/reg1.do?name="+name; //还有一个参数表示的是异步还是同步,一般不写直接就是true,异步的 req.open("GET",url,true); //3333333333这个就是回调函数 req.onreadystatechange=callback; //这个send是在从servlet判断你的账号是不是存在, 如果是true就说名字存在,给页面返回了以后才有的.为啥写空不知道 //4发送请求 req.send(null); //回调函数 function callback(){ //第一个是我们的服务器成功接受了响应,并且解释了出来,状态4 第二个是服务器内部没有发生错误, url什么的也没有错, if(req.readyState=4&&req.status==200){ var date=req.responseText; if(date=="false"){ //下面的是意思是,如果账号存在了,提交按钮自动消失 //超级叼 var ui =document.getElementById("tijiao"); ui.style.display="none"; $("#namediv").html("用户名已经存在"); }else{ //不为空了,按钮一直显示 var ui =document.getElementById("tijiao"); ui.style.display=""; $("#namediv").html("用户名可以使用"); } } } } } function createXmlHttpRequest(){ //如果是ie6以上版本的浏览器 if(window.XMLHttpRequest){ return new XMLHttpRequest(); }else{ //如果浏览器是ie以下的 return new ActiveXObject("Microsoft.XMLHTTP"); } } </script> </head> <body> <form action="/maven/reg1.do" id="form1"> <table id="aa"> <tr> <td>用户名</td> <td><input type="text" name="username" id="name" onblur="validate();" />&nbsp;<font color="red">*</font></td> <td> <div id="namediv" style="display: inline"></div> </td> <td>密码</td> <td><input type="password" name="password"></td> <td>电话</td> <td><input type="text" name="phone"></td> <td><input type="submit" value="点击注册" id="tijiao"></td> </tr> </table> </form> </body> </html> ``` ``` ``` ``` package com.gray.user.controller; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpRequest; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import com.gray.user.entity.RegUser; import com.gray.user.service.impl.RegServiceImpl; import com.gray.user.service.impl.UserServiceImpl; @Controller public class RegController { @Autowired private RegServiceImpl userService; //自动装载他到spring @RequestMapping("/reg1.do") //url public String dologin(Model model,HttpServletResponse res,@RequestParam String username,RegUser rg,HttpServletResponse response) throws IOException{ boolean used=false; System.out.println("测试参数获取到bean没有"+rg.getUsername()+rg.getPassword()+rg.getPhone()); rg.setUsername(username); if(userService.doUserLogin(rg)){ used=true; System.out.println("通过control到--->service---到dao---到usermapp.在返回回来,service里面是ture,就是说账号不重复"); }else{ used=false; System.out.println("通过control到--->service---到dao---到usermapp.在返回回来,service里面是false,重复了账号 "); } return "regsuccess"; } } ``` ``` package com.gray.user.service.impl; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.gray.user.dao.UserDao; import com.gray.user.entity.RegUser; import com.gray.user.entity.User; import com.gray.user.service.RegService; import com.gray.user.service.UserService; @Service public class RegServiceImpl implements RegService { @Autowired private UserDao<RegUser> dao; @Override public boolean doUserLogin(RegUser ruser) { //第一次执行查询数据库,查询 userdao selectUserName方法。 他这个方法和user.xml里面的id为selectUserName串联了. //也就是直接调用查询语句,并且吧值返回给reguser 类 System.out.println("testRegServiceImpl------->查询数据库,查询语句为id是selectusername"); List<RegUser> list = dao.selectUserName(ruser.getUsername()); System.out.println("查到了集合大小是"+list.size()+"查到了和你账号相同是的是几个"); if(list.size() == 0){ System.out.println("RegServiceImpl---你没有查询到你账号和数据库相同的信息.所以你return,"); for(int i=0;i<list.size();i++){ System.out.println(list.get(i).getUsername()); } return true; }else{ if(list.size()!=0){ System.out.println("regServiceImpl---查询到和你相同的账号不是0个,返回false"); return false; }else{ System.out.println("regserviceImpl----其他情况我也不知道啥情况,也返回false"); return false; } } } } ``` ``` 页面上的ajax 他就一直出毛病,数据库有个账号名是aa 只有我在表单填写aa 他才在网页提示账号重复, 别的任何都不提示,只会提示不能为空, 而且还失灵时不灵。 但是用system. 输出 我写的任何判断都是对了, 这是为啥? 请求大神给我说下,最好说下哪里错了。谢谢了
Ajax+nodejs新手求问!
我有一个页面A,其中通过iframe加载了一个页面B。页面B里有个表单,表单里有个submit按钮。我在这个B页面的js中为这个submit按钮添加了一个事件函数。在这个事件函数中我创建了一个XMLHttpRequest实例xhr1。然后后台我用nodejs接收提交的表单数据并发送响应内容。我想让响应内容出现在父页面A的特定位置上。 现在数据接收、发送响应内容都没有问题,问题是响应的内容不能出现在A页面特定位置上。 我xhr1的onreadystatechange事件函数为 ``` xhr1.onreadystatechange=function(){ if (xhr1.readyState==4) { if ((xhr1.status>=200&&htr1.status<300)||xhr1.status==304) { window.parent.document.getElementById("regi").innerHTML=xhr1.responseText; } else{ window.parent.document.getElementById("regi").innerHTML="Unsuccessfull: "; } } } ``` regi是父页面A中的一个元素的id。 可是,这样写的结果是父页面A的regi元素内容并没有变为xhr1.responseText的内容,xhr1.responseText居然写在了页面B里。请问是哪里出问题了?怎样才能实现我想要的效果? 非常感谢!!
Ajax异步处理跳转不了
这是第一个jsp页面的代码,可以正常进入AjaxServlet ``` var xmlHttpRequest=null; //页面加载 window.onload=function(){ //获取按钮对象 var but=document.getElementById("login"); but.onclick=function(){ //处理ajax //对浏览器判断 if (window.ActiveXOject) { //IE xmlHttpRequest=new ActiveXOject(Microsoft.XMLHTTP); }else{ xmlHttpRequest=new XMLHttpRequest(); } //获取内容 var loginname=document.getElementById("loginname").value; var upassword=document.getElementById("upassword").value; var inputRand=document.getElementById("inputRand").value; //打开链接 xmlHttpRequest.open("get","AjaxServlet?loginname="+loginname+"&upassword="+upassword+"&inputRand="+inputRand+"&type=1"+"&random="+new Date().getTime(),true); //回调函数 xmlHttpRequest.onreadystatechange=AjaxCallBack; //发送 xmlHttpRequest.send(null); } }; //创建回调函数 function AjaxCallBack(){ if (xmlHttpRequest.readyState==4) { if (xmlHttpRequest.status==200) { //读取后台回传的数据 var content=xmlHttpRequest.responseText; var divObject=document.getElementById("resultdiv"); divObject.innerHTML=content; if (content=="登录成功") { window.location.href="index.jsp"; } } } } ``` 这是第二个jsp页面的代码,执行之后没有进入后台AjaxServlet,路径是没有错的 而且不光是进不了AjaxServlet,把URL改成随便的一个JSP页面或者Servlet也跳不过去 ``` var xmlHttpRequest=null; //页面加载 window.onload=function(){ //获取按钮对象 var but=document.getElementById("OK"); but.onclick=function(){ //处理ajax //对浏览器判断 if (window.ActiveXOject) { //IE xmlHttpRequest=new ActiveXOject(Microsoft.XMLHTTP); }else{ xmlHttpRequest=new XMLHttpRequest(); } //获取内容 var oldpassword=document.getElementById("oldpassword").value; var newpassword=document.getElementById("newpassword").value; var renewpassword=document.getElementById("renewpassword").value; //打开链接 //alert("执行到这里"); xmlHttpRequest.open("get","../../AjaxServlet?oldpassword="+oldpassword+"&newpassword="+newpassword+"&renewpassword="+renewpassword+"&type=2",true); //回调函数 xmlHttpRequest.onreadystatechange=AjaxCallBack; //发送 xmlHttpRequest.send(null); } }; //创建回调函数 function AjaxCallBack(){ if (xmlHttpRequest.readyState==4) { if (xmlHttpRequest.status==200) { //读取后台回传的数据 var content=xmlHttpRequest.responseText; var divObject=document.getElementById("resultdiv"); divObject.innerHTML=content; } } } ``` 我是初学者,如果是写法不对,想请教一下怎样在一个项目里面的多个JSP页面实现异步处理
layui的分页+模糊查询
layui.use('upload', function(){ var upload = layui.upload; var $ = layui.jquery layui.use('table', function(){ var table = layui.table,//表格 laypage = layui.laypage,//分页 layer = layui.layer; //弹层 //执行一个 table 实例 table.render({ elem: '#kwgroup_table', height: 620, url: '/spRestCon/findShangPin', //数据接口 title: '商品表', page: true, //开启分页 toolbar: 'default', //开启工具栏,此处显示默认图标,可以自定义模板,详见文档 //totalRow: true, //开启合计行 cols: [[ //表头 //fixed: 'left', {field: 'id', title: '商品ID',sort: true, width:50}, {field: 'productName', title: '商品名称', width:100}, {field: 'money', title: '商品价格', width: 80}, {field: 'createdate', title: '添加时间', width:110}, {fixed: 'right',title:'商品信息操作', width: 135, align:'center', toolbar: '#operation'} ]] }); //分页 laypage.render({ elem : 'paging', // 分页容器的id skin : '#1E9FFF', // 自定义选中色值 jump : function(obj, first) { if (!first) { layer.msg('第' + obj.curr + '页', { offset : 'b' }); } } }); //监听行工具事件 table.on('tool(kwgroup_table)', function(obj){ //注:tool 是工具条事件名,test 是 table 原始容器的属性 lay-filter="对应的值" var data = obj.data //获得当前行数据 ,layEvent = obj.event; //获得 lay-event 对应的值 if(layEvent === 'del'){ var delId=data.id; layer.confirm('是否删除此商品', function(index){ obj.del(); //删除对应行(tr)的DOM结构 layer.close(index); //向服务端发送删除指令 $.get("","id="+delId,function(rv){ if(rv.falg==false){ layer.msg('删除失败'); }else{ layer.msg('已删除'); } }); }); } else if(layEvent === 'edit'){ layer.confirm('选择操作', { btn: ['添加', '修改', '取消'] //可以无限个按钮 ,btn1: function(index, layero){ layer.msg('按钮1'); },btn2: function(index, layero){ layer.msg('按钮2'); } }); }else if(layEvent === 'upd'){ layer.msg('编辑操作'); } }); }); $('#btn').click(function(){ var spName=$("#spName").val().trim(); var page=$(".layui-laypage-limits").find("option:selected").val();//获取分页数目 var limit=$(".layui-laypage-em").next().html();//获取当前页码值 alert(page); alert(limit); if(spName==null){ alert(spName); }else{ $.get("/spRestCon/findShangPin", "productName="+spName+ "&page="+page+ "&limit="+limit, function(rv){ },"json"); } }); }); 我把文本框写入的值传到后台拿到返回值之后怎么展示模糊查询的数据? 是把上面那一片layui的模板代码把他们放在一个方法体里在拿到返回值的ajax方法体里调用还是怎么弄? SOS~
一个按键的响应
用ext做了一个后台的界面,如下 [img][/img] 在其中的右边的相关部分是采用html 做个一个静态的页面。 其中有个按钮是这样实现的 [code="java"] <INPUT class=submit onclick="saveNews()" id=submit_button type=submit value=提交 name=commit> [/code] [code="java"] <SCRIPT type=text/javascript> function saveNews() { alert("Enter to the saveNews"); //获取接受返回信息层 var msg = document.getElementById("message"); //获取表单对象和用户信息值 var f = document.news_form; var title = f.title.value; title = encodeURI(title); title = encodeURI(title); alert("title :"+title); var content = f.content.value; var type = f.type.value; //接收表单的URL地址 var url = "commit_news.jsp"; //需要POST的值,把每个变量都通过&来联接 var postStr = "title="+ title +"&content="+ content +"&type="+ type; //实例化Ajax var ajax = null; if(window.XMLHttpRequest){ ajax = new XMLHttpRequest(); } else if(window.ActiveXObject){ ajax = new ActiveXObject("Microsoft.XMLHTTP"); } else{ alert("error"); return; } //通过Post方式打开连接 ajax.open("POST", url, true); //定义传输的文件HTTP头信息 ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); //发送POST数据 ajax.send(postStr); //返回数据的处理函数 ajax.onreadystatechange = function(){ if (ajax.readyState == 4 && ajax.status == 200){ msg.innerHTML = ajax.responseText; } } window.location.href = "../../adminmain.jsp"; alert("文章发表成功"); } </SCRIPT> [/code] 如果单纯的建立以个html文件,以上代码不存在任何的问题,但是把它 Ext.TabPane 的子类中,上面的代码 出了那个跳转成功以外,其他好像没有 相应,firefox提示有错误,但是调试不成功,请问,能告诉我错误在什么地方
ssh 实体对象转jason 前台无法显示
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <%@ include file="/public/head.jspf" %> <style type="text/css"> body { margin: 1px; } .searchbox { margin: -3; } </style> <script type="text/javascript"> $(function(){ $('#dg').datagrid({ //url地址改为请求categoryAction url:'forder_queryJoinUser.action', loadMsg:'Loading......', queryParams:{username:''}, fitColumns:true,//水平自动展开,如果设置此属性,则不会有水平滚动条,演示冻结列时,该参数不要设置 striped:true, //当数据多的时候不换行 nowrap:true, singleSelect:false, //如果为真,只允许单行显示,全显功能失效 //设置分页 pagination:true, //设置每页显示的记录数 pageSize:10, //设置可选的每页记录数,供用户选择,默认是10,20,30,40... pageList:[5,10,15,20], idField:'id',//指定id为标识字段,在删除,更新的时候有用,如果配置此字段,在翻页时,换页不会影响选中的项 toolbar: [{ iconCls: 'icon-edit', text:'更新订单', handler: function(){ //判断是否有选中行记录,使用getSelections获取选中的所有行 var rows = $("#dg").datagrid("getSelections"); if(rows.length == 0) { //弹出提示信息 $.messager.show({ //语法类似于java中的静态方法,直接对象调用 title:'错误提示', msg:'至少要选择一条记录', timeout:2000, showType:'slide', }); }else if(rows.length != 1) { //弹出提示信息 $.messager.show({ //语法类似于java中的静态方法,直接对象调用 title:'错误提示', msg:'每次只能更新一条记录', timeout:2000, showType:'slide', }); } else{ //弹出更新的页面 parent.$("#win").window({ title:"更新订单", width:350, height:250, content:'<iframe src="send_order_update.action" frameborder="0" width="100%" height="100%"/>' }); } } },'-',{ iconCls: 'icon-remove', text:'删除订单', handler: function(){ //判断是否有选中行记录,使用getSelections获取选中的所有行 var rows = $("#dg").datagrid("getSelections"); //返回被选中的行,如果没有任何行被选中,则返回空数组 if(rows.length == 0) { //弹出提示信息 $.messager.show({ title:'错误提示', msg:'至少要选择一条记录', timeout:2000, showType:'slide', }); } else { //提示是否确认删除,如果确认则执行删除的逻辑 $.messager.confirm('删除的确认对话框', '您确定要删除此项吗?', function(r){ if (r){ //1. 从获取的记录中获取相应的的id,拼接id的值,然后发送后台1,2,3,4 var ids = ""; for(var i = 0; i < rows.length; i ++) { ids += rows[i].id + ","; } ids = ids.substr(0, ids.lastIndexOf(",")); //2. 发送ajax请求 $.post("forder_deleteByIds.action",{ids:ids},function(result){ if(result == "true") { //将刚刚选中的记录删除,要不然会影响后面更新的操作 $("#dg").datagrid("uncheckAll"); //刷新当前页,查询的时候我们用的是load,刷新第一页,reload是刷新当前页 $("#dg").datagrid("reload");//不带参数默认为上面的queryParams } else { $.messager.show({ title:'删除异常', msg:'删除失败,请检查操作', timeout:2000, showType:'slide', }); } },"text"); } }); } } },'-',{ //查询按钮不是LinkButton,它有语法,但是也支持解析HTML标签 text:"<input id='ss' name='serach' />" }], rowStyler: function(index,row){ console.info("index" + index + "," + row) if(index % 2 == 0) { return 'background-color:#fff;'; } else { return 'background-color:#c4e1e1;'; } }, //同列属性,但是这些列将会冻结在左侧,大小不会改变,当宽度大于250时,会显示滚动条,但是冻结的列不在滚动条内 frozenColumns:[[ {field:'checkbox',checkbox:true}, {field:'id',title:'编号',width:60} ]], columns:[[ {field:'name',title:'收货人姓名',width:80}, {field:'phone',title:'收货人电话',width:100}, {field:'remark',title:'买家留言',width:100}, {field:'date',title:'创建日期',width:100}, {field:'total',title:'订单总价',width:100}, {field:'address',title:'收货地址',width:150}, {field:'user.id',title:'买家id',width:60}, {field:'user.login',title:'买家登录名',width:80}, {field:'status.status',title:'订单状态',width:100} ]] }); //把普通的文本框转化为查询搜索文本框 $('#ss').searchbox({ //触发查询事件 searcher:function(value,username){ //value表示输入的值 //获取当前查询的关键字,通过DataGrid加载相应的信息,使用load加载和显示第一页的所有行。 //如果指定了参数,它将取代'queryParams'属性。通常可以通过传递一些参数执行一次查询,通过调用这个方法会向上面url指定的action去发送请求,从服务器加载新数据。 $('#dg').datagrid('load',{ username: value }); }, prompt:'请输入搜索关键字' }); }); </script> </head> <body> <table id="dg"></table> </body> </html> `jsp代码 下面action: public String queryJoinUser() { // 用来存储分页的数据 pageMap = new HashMap<String, Object>(); System.out.println(username); // 根据关键字和分页的参数查询相应的数据 List<Forder> forderList = forderService.queryJoinUser(username, page, rows); pageMap.put("\"rows\"", forderList); pageMap.put("\"total\"", forderService.getCount(username)); System.out.println(pageMap); return "jsonMap"; } struts.xml <action name="forder_*" class="forderAction" method="{1}"> <result name="jsonMap" type="json"> <param name="root">pageMap</param> <param name="excludeProperties"> rows\[\d+\]\.post, rows\[\d+\]\.user\.pass, rows\[\d+\]\.user\.sex, rows\[\d+\]\.user\.phone, rows\[\d+\]\.user\.email, rows\[\d+\]\.status\.id </param> </result> <result name="bank"> /user/bank.jsp </result> </action> 执行后pageMap的输出: {"total"=1, "rows"=[Forder [id=1, name=张小, phone=1851663595, remark=是否被, date=null, total=14.00, post=4325232, addressrk=, date=null, total=100.00, post=dcvdf, address=市场v吃饭的]]} `` 没有报任何错误就是不显示![图片说明](https://img-ask.csdn.net/upload/201706/07/1496767475_187876.png) ``` ``` ```
ext的弹出窗口如何布局?
ext渲染html通过div用viewport很好布局,我现在如何在ext的弹出窗口window里布局那,我在ext window里放了queryform和grid grid的布局一直搞不好,设置grid的height就没有列拉条。设置viewConfig : {forceFit : true}则数据显示不正确 [b]问题补充:[/b] 弹出子窗口,要在弹出一窗口如何扑获click事件 [b]问题补充:[/b] 我把代码贴出来: [code="java"] Ext.onReady(function() { Ext.QuickTips.init(); Ext.form.Field.prototype.msgTarget = 'side'; var inputPageSize = 8; function renderDescn(value, cellmeta, record, rowIndex, columnIndex, store) { var str = "<input type='button' id='update-btn' value='分组电文详细信息' class='x-btn-wrap x-btn' onclick='Info();'/>"; return str; } var cm = new Ext.grid.ColumnModel([new Ext.grid.RowNumberer(), { header : '电文组号', dataIndex : 'DESTINATION', sortable : true }, { header : '电文条数', dataIndex : 'CNT', sortable : true }, { header : '发送时间', dataIndex : 'SENTLOGTIME', sortable : true }, { header : '操作', dataIndex : 'SENTMESSAGEID', renderer : renderDescn }]); /** * 声明数据适配器,将数据源与列模型绑定 */ var MyRecord = Ext.data.Record.create([{ name : 'DESTINATION', mapping : 'DESTINATION' }, { name : 'SENTLOGTIME', mapping : 'SENTLOGTIME' }, { name : 'CNT', mapping : 'CNT' }]) var store = new Ext.data.Store({ proxy : new Ext.data.HttpProxy({ url : '../sentmessagegroup.do?command=list' }), reader : new Ext.data.JsonReader({ totalProperty : 'totalProperty', root : 'root' }, MyRecord) }); /** * 生成Bbar,用于分页显示 */ var bbar = new Ext.PagingToolbar({ pageSize : inputPageSize, store : store, displayInfo : true, displayMsg : '显示第{0}条到{1}条记录,一共{2}条', emptyMsg : '没有记录' }); /** * 声明一个Grid,列表显示信息 */ var grid = new Ext.grid.GridPanel({ el : 'grid', region : 'center', title : '发送分组详细信息', // height : 430, trackMouseOver : false, loadMask : { msg : '正在加载数据,请稍后.....' }, ds : store, cm : cm, sm : new Ext.grid.RowSelectionModel(), bbar : bbar, viewConfig : { forceFit : true } // buttons : [{ // text : '添加电文', // id : 'addbtn', // handler : function() { // addclick(); // } // }] }); window.Info = function() { var PageSize = 8; var selectRecord = grid.getSelectionModel().getSelected(); var data = selectRecord.get("DESTINATION"); //Ext.get("update").on("click", update); function desc(value, cellmeta, record, rowIndex, columnIndex, store) { var str = "<input type='button' id='update' value='详细信息' class='x-btn-wrap x-btn' onclick='update();'/>"; return str; } //Ext.get("update").on("click", update); var infocm = new Ext.grid.ColumnModel([new Ext.grid.RowNumberer(), { header : '序列号', dataIndex : 'SENTMESSAGEID', sortable : true }, { header : '电文插入时间', dataIndex : 'SENTLOGTIME', sortable : true }, { header : '电文号', dataIndex : 'MESSAGEID', sortable : true }, { header : '电文内容', dataIndex : 'BUFFERDATA', sortable : true }, { header : '终点代码', dataIndex : 'DESTINATION', sortable : true }, { header : '长度', dataIndex : 'LENGTH', sortable : true }, { header : '发送结果', dataIndex : 'SENDRESULT', sortable : true }, { header : '成功时间', dataIndex : 'PROCESSLOGTIME', sortable : true }, { header : '重发次数', dataIndex : 'RESENDNUMBER', sortable : true }, { header : '标注', dataIndex : 'MEMO', sortable : true }, { header : '操作', dataIndex : 'SENTMESSAGEID', renderer : desc }]); var infoRecord = Ext.data.Record.create([{ name : 'SENTMESSAGEID', mapping : 'SENTMESSAGEID' }, { name : 'SENTLOGTIME', mapping : 'SENTLOGTIME' }, { name : 'MESSAGEID', mapping : 'MESSAGEID' }, { name : 'BUFFERDATA', mapping : 'BUFFERDATA' }, { name : 'BUFFERCONTENT', mapping : 'BUFFERCONTENT' }, { name : 'DESTINATION', mapping : 'DESTINATION' }, { name : 'LENGTH', mapping : 'LENGTH' }, { name : 'SENDRESULT', mapping : 'SENDRESULT' }, { name : 'PROCESSLOGTIME', mapping : 'PROCESSLOGTIME' }, { name : 'RESENDNUMBER', mapping : 'RESENDNUMBER' }, { name : 'MEMO', mapping : 'MEMO' }]) var infostore = new Ext.data.Store({ proxy : new Ext.data.HttpProxy({ url : '../sentmessagegroup.do?command=grouplist' }), reader : new Ext.data.JsonReader({ totalProperty : 'totalProperty', root : 'root' }, infoRecord) }); infostore.baseParams = { destination : data }; var infobbar = new Ext.PagingToolbar({ pageSize : PageSize, store : infostore, displayInfo : true, displayMsg : '显示第{0}条到{1}条记录,一共{2}条', emptyMsg : '没有记录' }); var infogrid = new Ext.grid.GridPanel({ region : 'center', title : '发送电文详细信息', height : 210, trackMouseOver : false, loadMask : { msg : '正在加载数据,请稍后.....' }, ds : infostore, cm : infocm, sm : new Ext.grid.RowSelectionModel(), bbar : infobbar // viewConfig : { // forceFit : true // } // buttons : [{ // text : '添加电文', // id : 'addbtn', // handler : function() { // addclick(); // } // }] }); function update() { alert("update start"); var infowin; if (!infowin) { var selectRecord = infogrid.getSelectionModel().getSelected(); var infofrom = new Ext.form.FormPanel({ labelAlign : 'top', buttonAlign : 'right', title : '电文详细信息', bodyStyle : 'padding:5px', height : 415, width : 650, frame : true, url : '../sentmessage.do?command=again', items : [{ layout : 'column', border : false, items : [{ columnWidth : .5, layout : 'form', border : false, items : [{ xtype : 'textfield', fieldLabel : '序列号', name : 'SENTMESSAGEID', readOnly : true, style : "background: #B9B9C3;", anchor : '85%' }] }, { columnWidth : .5, layout : 'form', border : false, items : [{ xtype : 'textfield', fieldLabel : '电文插入时间', name : 'SENTLOGTIME', minLength : 1, maxLength : 25, readOnly : true, style : "background: #B9B9C3;", anchor : '85%' }] }] }, { layout : 'column', border : false, items : [{ columnWidth : .5, layout : 'form', border : false, items : [{ xtype : 'textfield', fieldLabel : '电文号', name : 'MESSAGEID', readOnly : true, style : "background: #B9B9C3;", anchor : '85%' }] }, { columnWidth : .5, layout : 'form', border : false, items : [{ xtype : 'textfield', fieldLabel : '发送方主机代号', name : 'DESTINATION', minLength : 0, maxLength : 17, readOnly : true, style : "background: #B9B9C3;", anchor : '85%' }] }] }, { layout : 'column', border : false, items : [{ columnWidth : .5, layout : 'form', border : false, items : [{ xtype : 'textfield', fieldLabel : '长度', name : 'LENGTH', readOnly : true, style : "background: #B9B9C3;", anchor : '85%' }] }, { columnWidth : .5, layout : 'form', border : false, items : [{ xtype : 'textfield', xtype : 'textfield', fieldLabel : '处理标志', name : 'SENDRESULT', minLength : 0, maxLength : 17, // readOnly : true, // disabled:true, anchor : '85%' }] }] }, { layout : 'column', border : false, items : [{ columnWidth : .5, layout : 'form', border : false, items : [{ xtype : 'textfield', fieldLabel : '应用处理时间', name : 'PROCESSLOGTIME', minLength : 1, maxLength : 17, readOnly : true, style : "background: #B9B9C3;", anchor : '85%' }] }, { columnWidth : .5, layout : 'form', border : false, items : [{ xtype : 'textfield', fieldLabel : '重发次数', name : 'RESENDNUMBER', minLength : 1, maxLength : 17, readOnly : true, style : "background: #B9B9C3;", anchor : '85%' }] }] }, { layout : 'column', border : false, items : [{ columnWidth : .93, layout : 'form', border : false, items : [{ xtype : 'textarea', fieldLabel : '电文内容', name : 'BUFFERCONTENT', minLength : 1, maxLength : 5000, anchor : '100%' }] }] }, { layout : 'column', border : false, items : [{ columnWidth : .93, layout : 'form', border : false, items : [{ xtype : 'textarea', fieldLabel : '标注', name : 'MEMO', minLength : 1, maxLength : 500, anchor : '100%' }] }] }], buttons : [{ text : '手动重发', handler : function() { from.getForm().submit({ success : function(form, action) { var json = action.response.responseText; var check = eval("(" + json + ")"); if (check.update == true) { Ext.MessageBox.alert('信息', '更发成功,点击返回列表页面'); grid.render(); } infostore.load({ params : { start : 0, limit : inputPageSize } }); win.close(); }, failure : function(form, action) { var json = action.response.responseText; var check = eval("(" + json + ")"); if (check.check == false) { Ext.MessageBox .alert('错误', '抱歉,该用户权限不够'); } else { Ext.MessageBox.alert('信息', '添加失败,请与管理员联系!'); } } }); } }] } ); infowin = new Ext.Window({ title : 'Window', closable : true, width : 660, height : 435, // border:false, plain : true, draggable : true, collapsible : true, closeAction : 'hide', items : [infofrom] }); } // from.findField("BUFFERDATA").setValue("blob test"); //Ext.get('update-btn').get('update').on("click", update); infowin.show(Ext.get('update')); /** * form加载事件 */ // from.form.findField("BUFFERDATA").setValue(blob.bufferdata); infofrom.getForm().loadRecord(selectRecord); // from.form.findField("BUFFERDATA").setValue(blob.bufferdata); }; var queryform = new Ext.FormPanel({ labelAlign : 'left', region : 'north', title : '电文查询', buttonAlign : 'right', bodyStyle : 'padding:5px', // width : 300, height : 150, frame : true, labelWidth : 80, viewConfig : { forceFit : true }, items : [{ layout : 'column', border : false, items : [{ columnWidth : .5, layout : 'form', border : false, items : [{ // 用户编号 xtype : 'textfield', fieldLabel : '电文号', name : 'messageid', anchor : '85%' }, { // 用户编号 xtype : 'datefield', fieldLabel : '开始时间', name : 'startdate', format : 'Y-m-d', anchor : '85%' } ] }, { columnWidth : .5, layout : 'form', border : false, items : [{ // 用户名 xtype : 'textfield', fieldLabel : '发送结果', name : 'sendresult', anchor : '85%' }, { // 用户名 xtype : 'datefield', fieldLabel : '结束时间', name : 'enddate', format : 'Y-m-d', anchor : '85%' }] }] }], buttons : [ { text : '查询', handler : function() { var messageid = queryform.form.findField("messageid") .getValue(); // alert("messageid:"+messageid); var sendresult = queryform.form.findField("sendresult") .getValue(); // alert("destination:"+destination); var start = queryform.form.findField("startdate") .getValue(); var startdate; // alert("start:"+start); if (start != null && start != "") { startdate = start.format("Y-m-d"); } // alert("startdate:"+startdate); var end = queryform.form.findField("enddate").getValue(); var enddate; // alert("end:"+end); if (end != null && end != "") { enddate = end.format("Y-m-d"); } // alert("enddate:"+enddate); infostore.baseParams = { messageid : messageid, // destination : data, startdate : startdate, sendresult : sendresult, enddate : enddate }; infostore.reload({ params : { start : 0, limit : inputPageSize } }); } }, { text : '重置', handler : function() { queryform.form.reset(); } }] }) var win = new Ext.Window({ title : 'infoWindow', closable : true, width : 660, height : 500, // border:false, plain : true, draggable : true, collapsible : true, closeAction : 'hide', layout : 'border', items : [queryform, infogrid] }) // infogrid.render(); infostore.load({ params : { start : 0, limit : PageSize } }) // infogrid.render(); win.show(Ext.get('update-btn')); } // =================================表单提交======================================== /** * 为Grid的添加按钮编写单击事件 */ function addclick() { var win; if (!win) { var from = new Ext.form.FormPanel({ labelAlign : 'top', buttonAlign : 'right', title : '添加发送电文信息', bodyStyle : 'padding:5px', height : 275, width : 650, frame : true, autoScroll : true, url : '../sentmessage.do?command=add', items : [{ layout : 'column', border : false, items : [{ columnWidth : .5, layout : 'form', border : false, items : [{ xtype : 'textfield', fieldLabel : '序列号', name : 'MAPPINGMESSAGEID', anchor : '85%' }, { xtype : 'textfield', fieldLabel : '电文号', name : 'MESSAGEID', anchor : '85%' }, { xtype : 'textfield', fieldLabel : '长度', name : 'LENGTH', anchor : '85%' }, { xtype : 'textfield', fieldLabel : '重发次数', name : 'RESENDNUMBER', minLength : 1, maxLength : 17, anchor : '85%' }] }, { columnWidth : .5, layout : 'form', border : false, items : [{ xtype : 'textfield', fieldLabel : '电文方向', name : 'DIRECTION', minLength : 1, maxLength : 17, anchor : '85%' }, { xtype : 'textfield', fieldLabel : '主机号', name : 'HOSTDC', minLength : 0, maxLength : 17, anchor : '85%' }, { xtype : 'textfield', fieldLabel : '电文组号', name : 'MESSAGEGROUPID', minLength : 0, maxLength : 17, anchor : '85%' }] }] }], buttons : [{ text : '提交', handler : function() { if (from.form.isValid()) { from.getForm().submit({ success : function() { Ext.MessageBox.alert('信息', '添加成功,点击返回列表页面'); grid.render(); store.load({ params : { start : 0, limit : inputPageSize } }); win.close(); }, failure : function() { Ext.MessageBox.alert('信息', '添加失败,请与管理员联系!'); } }); } } }, { text : '重置', handler : function() { from.getForm().reset(); } }] }); /** * 声明一个window,包装FormPanel */ win = new Ext.Window({ title : 'InfoWindow', closable : true, width : 660, height : 300, // border:false, plain : true, draggable : true, collapsible : true, closeAction : 'hide', items : [from] }); } win.show(Ext.get('addbtn')); }; window.delInfo = function() { var sm = grid.getSelectionModel(); var count = sm.getCount(); if (count == 0) { Ext.MessageBox.alert('信息', '您没有勾选任何记录!'); } else { Ext.MessageBox.confirm('Message', '确定要删除?', function(btn) { if (btn == 'yes') { var record = sm.getSelected(); var str = record.get('MAPPINGMESSAGEID'); Ext.Ajax.request({ url : '../sentmessage.do?command=delete', params : { MAPPINGMESSAGEID : str }, success : function() { Ext.MessageBox.alert('信息', '删除成功'); store.reload(); }, failure : function() { Ext.MessageBox.alert('错误', '请与后台服务人员联系'); }, timeout : 30000, headers : { 'my-header' : 'foo' } }); } }); } }; window.updateInfo = function() { alert("parent upadateinfo"); var win; if (!win) { var selectRecode = grid.getSelectionModel().getSelected(); var from = new Ext.form.FormPanel({ labelAlign : 'top', buttonAlign : 'right', title : '电文详细信息', bodyStyle : 'padding:5px', height : 415, width : 650, frame : true, url : '../sentmessage.do?command=again', items : [{ layout : 'column', border : false, items : [{ columnWidth : .5, layout : 'form', border : false, items : [{ xtype : 'textfield', fieldLabel : '序列号', name : 'SENTMESSAGEID', readOnly : true, style : "background: #B9B9C3;", anchor : '85%' }] }, { columnWidth : .5, layout : 'form', border : false, items : [{ xtype : 'textfield', fieldLabel : '电文插入时间', name : 'SENTLOGTIME', minLength : 1, maxLength : 25, readOnly : true, style : "background: #B9B9C3;", anchor : '85%' }] }] }, { layout : 'column', border : false, items : [{ columnWidth : .5, layout : 'form', border : false, items : [{ xtype : 'textfield', fieldLabel : '电文号', name : 'MESSAGEID', readOnly : true, style : "background: #B9B9C3;", anchor : '85%' }] }, { columnWidth : .5, layout : 'form', border : false, items : [{ xtype : 'textfield', fieldLabel : '发送方主机代号', name : 'DESTINATION', minLength : 0, maxLength : 17, readOnly : true, style : "background: #B9B9C3;", anchor : '85%' }] }] }, { layout : 'column', border : false, items : [{ columnWidth : .5, layout : 'form', border : false, items : [{ xtype : 'textfield', fieldLabel : '长度', name : 'LENGTH', readOnly : true, style : "background: #B9B9C3;", anchor : '85%' }] }, { columnWidth : .5, layout : 'form', border : false, items : [{ xtype : 'textfield', xtype : 'textfield', fieldLabel : '处理标志', name : 'SENDRESULT', minLength : 0, maxLength : 17, // readOnly : true, // disabled:true, anchor : '85%' }] }] }, { layout : 'column', border : false, items : [{ columnWidth : .5, layout : 'form', border : false, items : [{ xtype : 'textfield', fieldLabel : '应用处理时间', name : 'PROCESSLOGTIME', minLength : 1, maxLength : 17, readOnly : true, style : "background: #B9B9C3;", anchor : '85%' }] }, { columnWidth : .5, layout : 'form', border : false, items : [{ xtype : 'textfield', fieldLabel : '重发次数', name : 'RESENDNUMBER', minLength : 1, maxLength : 17, readOnly : true, style : "background: #B9B9C3;", anchor : '85%' }] }] }, { layout : 'column', border : false, items : [{ columnWidth : .93, layout : 'form', border : false, items : [{ xtype : 'textarea', fieldLabel : '电文内容', name : 'BUFFERCONTENT', minLength : 1, maxLength : 5000, anchor : '100%' }] }] }, { layout : 'column', border : false, items : [{ columnWidth : .93, layout : 'form', border : false, items : [{ xtype : 'textarea', fieldLabel : '标注', name : 'MEMO', minLength : 1, maxLength : 500, anchor : '100%' }] }] }], buttons : [{ text : '手动重发', handler : function() { from.getForm().submit({ success : function(form, action) { var json = action.response.responseText; var check = eval("(" + json + ")"); if (check.update == true) { Ext.MessageBox.alert('信息', '更发成功,点击返回列表页面'); grid.render(); } store.load({ params : { start : 0, limit : inputPageSize } }); win.close(); }, failure : function(form, action) { var json = action.response.responseText; var check = eval("(" + json + ")"); if (check.check == false) { Ext.MessageBox.alert('错误', '抱歉,该用户权限不够'); } else { Ext.MessageBox.alert('信息', '添加失败,请与管理员联系!'); } } }); } }] } ); win = new Ext.Window({ title : 'Window', closable : true, width : 660, height : 435, // border:false, plain : true, draggable : true, collapsible : true, closeAction : 'hide', items : [from] }); } // from.findField("BUFFERDATA").setValue("blob test"); win.show(Ext.get('update-btn')); /** * form加载事件 */ // from.form.findField("BUFFERDATA").setValue(blob.bufferdata); from.getForm().loadRecord(selectRecode); // from.form.findField("BUFFERDATA").setValue(blob.bufferdata); }; // =================================渲染呈现======================================== /** * 渲染呈现Grid,Store初始化 */ var queryform = new Ext.FormPanel({ labelAlign : 'left', region : 'north', title : '电文查询', buttonAlign : 'right', bodyStyle : 'padding:5px', width : 300, height : 150, frame : true, labelWidth : 80, items : [{ layout : 'column', border : false, items : [{ columnWidth : .5, layout : 'form', border : false, items : [{ // 用户编号 xtype : 'textfield', fieldLabel : '电文号', name : 'messageid', anchor : '85%' }, { // 用户编号 xtype : 'datefield', fieldLabel : '开始时间', name : 'startdate', format : 'Y-m-d', anchor : '85%' } ] }, { columnWidth : .5, layout : 'form', border : false, items : [{ // 用户名 xtype : 'textfield', fieldLabel : '终点代码', name : 'destination', anchor : '85%' }, { // 用户名 xtype : 'datefield', fieldLabel : '结束时间', name : 'enddate', format : 'Y-m-d', anchor : '85%' }] }] }], buttons : [ { text : '查询', handler : function() { var messageid = queryform.form.findField("messageid") .getValue(); // alert("messageid:"+messageid); var destination = queryform.form.findField("destination") .getValue(); // alert("destination:"+destination); var start = queryform.form.findField("startdate").getValue(); var startdate; // alert("start:"+start); if (start != null && start != "") { startdate = start.format("Y-m-d"); } // alert("startdate:"+startdate); var end = queryform.form.findField("enddate").getValue(); var enddate; // alert("end:"+end); if (end != null && end != "") { enddate = end.format("Y-m-d"); } // alert("enddate:"+enddate); store.baseParams = { messageid : messageid, destination : destination, startdate : startdate, enddate : enddate }; store.reload({ params : { start : 0, limit : inputPageSize } }); } }, { text : '重置', handler : function() { queryform.form.reset(); } }] }) var viewport = new Ext.Viewport({ layout : 'border', items : [queryform, grid] }) grid.render(); store.load({ params : { start : 0, limit : inputPageSize } }); }) Ext.override(Ext.menu.DateMenu, { render : function() { Ext.menu.DateMenu.superclass.render.call(this); if (Ext.isGecko) { this.picker.el.dom.childNodes[0].style.width = '178px'; this.picker.el.dom.style.width = '178px'; } } }); [/code] 点击主页面的分组详细信息,跳出一个子窗口,显示该组的详细纪录分页及查询,我现在想要的是在点击子窗口的的详细信息在跳出一个窗口,显示该条纪录的详细信息 [b]问题补充:[/b] to yourgame:我截图贴上来你就明白了,图1是主窗口点击上面的分组电文详细信息,就跳出图2子窗口,我现在就想点击图2的详细信息在跳出一个子窗口图3。图2是渲染到图1的一个div块的id,图2在跳出一个窗口3就没有可渲染的地方,因为图2是一个ext window不包含任何html,我的问题就在这里。 [b]问题补充:[/b] to yourgame:你还是没理解我要啥,你这只实现我做的工作,我的意思主页面跳出一个ext window,点击这个ext window上的grid在跳出一个ext window [b]问题补充:[/b] to yourname:子窗口可以跳出,但是值代不出来,第3个窗口的列信息和主窗口是不一样的
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私...
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小人工智障。 思路可以运用在不同地方,主要介绍的是思路。
面试官问我:什么是消息队列?什么场景需要他?用了会出现什么问题?
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图、个人联系方式和人才交流群,欢迎Star和完善 前言 消息队列在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在消息队列的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸...
8年经验面试官详解 Java 面试秘诀
作者 |胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。 Java程序员准备和投递简历的实...
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观...
MyBatis研习录(01)——MyBatis概述与入门
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis原本是apache的一个开源项目iBatis, 2010年该项目由apache software foundation 迁移到了google code并改名为MyBatis 。2013年11月MyBatis又迁移到Github。
程序员一般通过什么途径接私活?
二哥,你好,我想知道一般程序猿都如何接私活,我也想接,能告诉我一些方法吗? 上面是一个读者“烦不烦”问我的一个问题。其实不止是“烦不烦”,还有很多读者问过我类似这样的问题。 我接的私活不算多,挣到的钱也没有多少,加起来不到 20W。说实话,这个数目说出来我是有点心虚的,毕竟太少了,大家轻喷。但我想,恰好配得上“一般程序员”这个称号啊。毕竟苍蝇再小也是肉,我也算是有经验的人了。 唾弃接私活、做外...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip installselenium -ihttps://pypi.tuna.tsinghua.edu.cn/simple/ ...
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca...
Python爬虫精简步骤1 获取数据
爬虫,从本质上来说,就是利用程序在网上拿到对我们有价值的数据。 爬虫能做很多事,能做商业分析,也能做生活助手,比如:分析北京近两年二手房成交均价是多少?广州的Python工程师平均薪资是多少?北京哪家餐厅粤菜最好吃?等等。 这是个人利用爬虫所做到的事情,而公司,同样可以利用爬虫来实现巨大的商业价值。比如你所熟悉的搜索引擎——百度和谷歌,它们的核心技术之一也是爬虫,而且是超级爬虫。 从搜索巨头到人工...
Python绘图,圣诞树,花,爱心 | Turtle篇
每周每日,分享Python实战代码,入门资料,进阶资料,基础语法,爬虫,数据分析,web网站,机器学习,深度学习等等。 公众号回复【进群】沟通交流吧,QQ扫码进群学习吧 微信群 QQ群 1.画圣诞树 import turtle screen = turtle.Screen() screen.setup(800,600) circle = turtle.Turtle()...
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东...
破14亿,Python分析我国存在哪些人口危机!
一、背景 二、爬取数据 三、数据分析 1、总人口 2、男女人口比例 3、人口城镇化 4、人口增长率 5、人口老化(抚养比) 6、各省人口 7、世界人口 四、遇到的问题 遇到的问题 1、数据分页,需要获取从1949-2018年数据,观察到有近20年参数:LAST20,由此推测获取近70年的参数可设置为:LAST70 2、2019年数据没有放上去,可以手动添加上去 3、将数据进行 行列转换 4、列名...
web前端javascript+jquery知识点总结
1.Javascript 语法.用途 javascript 在前端网页中占有非常重要的地位,可以用于验证表单,制作特效等功能,它是一种描述语言,也是一种基于对象(Object)和事件驱动并具有安全性的脚本语言 ...
Python实战:抓肺炎疫情实时数据,画2019-nCoV疫情地图
今天,群里白垩老师问如何用python画武汉肺炎疫情地图。白垩老师是研究海洋生态与地球生物的学者,国家重点实验室成员,于不惑之年学习python,实为我等学习楷模。先前我并没有关注武汉肺炎的具体数据,也没有画过类似的数据分布图。于是就拿了两个小时,专门研究了一下,遂成此文。
听说想当黑客的都玩过这个Monyer游戏(1~14攻略)
第零关 进入传送门开始第0关(游戏链接) 请点击链接进入第1关: 连接在左边→ ←连接在右边 看不到啊。。。。(只能看到一堆大佬做完的留名,也能看到菜鸡的我,在后面~~) 直接fn+f12吧 &lt;span&gt;连接在左边→&lt;/span&gt; &lt;a href="first.php"&gt;&lt;/a&gt; &lt;span&gt;←连接在右边&lt;/span&gt; o...
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ...... ...
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!...
渗透测试-灰鸽子远控木马
木马概述 灰鸽子( Huigezi),原本该软件适用于公司和家庭管理,其功能十分强大,不但能监视摄像头、键盘记录、监控桌面、文件操作等。还提供了黑客专用功能,如:伪装系统图标、随意更换启动项名称和表述、随意更换端口、运行后自删除、毫无提示安装等,并采用反弹链接这种缺陷设计,使得使用者拥有最高权限,一经破解即无法控制。最终导致被黑客恶意使用。原作者的灰鸽子被定义为是一款集多种控制方式于一体的木马程序...
Python:爬取疫情每日数据
前言 目前每天各大平台,如腾讯、今日头条都会更新疫情每日数据,他们的数据源都是一样的,主要都是通过各地的卫健委官网通报。 以全国、湖北和上海为例,分别为以下三个网站: 国家卫健委官网:http://www.nhc.gov.cn/xcs/yqtb/list_gzbd.shtml 湖北卫健委官网:http://wjw.hubei.gov.cn/bmdt/ztzl/fkxxgzbdgrfyyq/xxfb...
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。 再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。 下文是原回答,希望能对你能有所启发。 如果我说,这个世界上人真的分三六九等,...
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合...
雷火神山直播超两亿,Web播放器事件监听是怎么实现的?
Web播放器解决了在手机浏览器和PC浏览器上播放音视频数据的问题,让视音频内容可以不依赖用户安装App,就能进行播放以及在社交平台进行传播。在视频业务大数据平台中,播放数据的统计分析非常重要,所以Web播放器在使用过程中,需要对其内部的数据进行收集并上报至服务端,此时,就需要对发生在其内部的一些播放行为进行事件监听。 那么Web播放器事件监听是怎么实现的呢? 01 监听事件明细表 名...
3万字总结,Mysql优化之精髓
本文知识点较多,篇幅较长,请耐心学习 MySQL已经成为时下关系型数据库产品的中坚力量,备受互联网大厂的青睐,出门面试想进BAT,想拿高工资,不会点MySQL优化知识,拿offer的成功率会大大下降。 为什么要优化 系统的吞吐量瓶颈往往出现在数据库的访问速度上 随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相应变慢 数据是存放在磁盘上的,读写速度无法和内存相比 如何优化 设计...
Python新型冠状病毒疫情数据自动爬取+统计+发送报告+数据屏幕(三)发送篇
今天介绍的项目是使用 Itchat 发送统计报告 项目功能设计: 定时爬取疫情数据存入Mysql 进行数据分析制作疫情报告 使用itchat给亲人朋友发送分析报告 基于Django做数据屏幕 使用Tableau做数据分析 来看看最终效果 目前已经完成,预计2月12日前更新 使用 itchat 发送数据统计报告 itchat 是一个基于 web微信的一个框架,但微信官方并不允许使用这...
作为程序员的我,大学四年一直自学,全靠这些实用工具和学习网站!
我本人因为高中沉迷于爱情,导致学业荒废,后来高考,毫无疑问进入了一所普普通通的大学,实在惭愧???? 我又是那么好强,现在学历不行,没办法改变的事情了,所以,进入大学开始,我就下定决心,一定要让自己掌握更多的技能,尤其选择了计算机这个行业,一定要多学习技术。 在进入大学学习不久后,我就认清了一个现实:我这个大学的整体教学质量和学习风气,真的一言难尽,懂的人自然知道怎么回事? 怎么办?我该如何更好的提升自...
粒子群算法求解物流配送路线问题(python)
1.Matlab实现粒子群算法的程序代码:https://www.cnblogs.com/kexinxin/p/9858664.html matlab代码求解函数最优值:https://blog.csdn.net/zyqblog/article/details/80829043 讲解通俗易懂,有数学实例的博文:https://blog.csdn.net/daaikuaichuan/article/...
教你如何编写第一个简单的爬虫
很多人知道爬虫,也很想利用爬虫去爬取自己想要的数据,那么爬虫到底怎么用呢?今天就教大家编写一个简单的爬虫。 下面以爬取笔者的个人博客网站为例获取第一篇文章的标题名称,教大家学会一个简单的爬虫。 第一步:获取页面 #!/usr/bin/python # coding: utf-8 import requests #引入包requests link = "http://www.santostang....
前端JS初级面试题二 (。•ˇ‸ˇ•。)老铁们!快来瞧瞧自己都会了么
1. 传统事件绑定和符合W3C标准的事件绑定有什么区别? 传统事件绑定 &lt;div onclick=""&gt;123&lt;/div&gt; div1.onclick = function(){}; &lt;button onmouseover=""&gt;&lt;/button&gt; 注意: 如果给同一个元素绑定了两次或多次相同类型的事件,那么后面的绑定会覆盖前面的绑定 (不支持DOM事...
情人节来了,教你个用 Python 表白的技巧
作者:@明哥 公众号:Python编程时光 2020年,这个看起来如此浪漫的年份,你还是一个人吗? 难不成我还能是一条狗? 18年的时候,写过一篇介绍如何使用 Python 来表白的文章。 虽然创意和使用效果都不错,但有一缺点,这是那个exe文件,女神需要打开电脑,才有可能参与进来,进而被你成功"调戏”。 由于是很早期的文章了,应该有很多人没有看过。 没有看过的,你可以点击这里查看:用Pyt...
用Python开发实用程序 – 计算器
作者:隋顺意 一段时间前,自己制作了一个库 “sui-math”。这其实是math的翻版。做完后,python既然可以轻易的完成任何的数学计算,何不用python开发一个小程序专门用以计算呢? 现在我们越来越依赖于计算器,很多复杂的计算都离不开它。我们使用过各式各样的计算器,无论是电脑自带的,还是网也上的计算器,却都没有自己动手编写属于自己计算器。今天就让我们走进计算器的世界,用python来编写...
经典算法(19)教你两分钟学会【选择排序】
这篇博客使用图文并茂的方式讲解选择排序算法,并有完整的算法逻辑以及代码实现。
Python学习笔记(语法篇)
本篇博客大部分内容摘自埃里克·马瑟斯所著的《Python编程:从入门到实战》(入门类书籍),采用举例的方式进行知识点提要 关于Python学习书籍推荐文章 《学习Python必备的8本书》 Python语法特点: 通过缩进进行语句组织 不需要变量或参数的声明 冒号 1 变量和简单数据结构 1.1 变量命名 只能包含字母、数字和下划线,且不能以数字打头。 1.2 字符串 在Python中,用引号...
相关热词 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数 c#日期精确到分钟 c#自定义异常必须继承 c#查表并返回值 c# 动态 表达式树 c# 监控方法耗时 c# listbox c#chart显示滚动条
立即提问