이번에는 ajax가 배열을 백그라운드로 전송하는 방법을 보여드리겠습니다. ajax가 배열을 백그라운드로 전송하는 주의 사항은 무엇입니까? 다음은 실제 사례입니다.
머리말
Ajax를 사용하여 다중 선택 상자를 비동기적으로 제출하여 작업해야 하는 개체의 ID를 가져옵니다. 이때 각 ID에 대한 개체를 만든 다음 넣을 수 있습니다. 그런 다음 JSON.stringify()이 배열에서 json 형식을 사용하여 백그라운드의 inputStream에 있는 json을 구문 분석합니다.문자열 JSON.stringify()
对这个数组进行json的格式化;在后台中再inputStream中解析出我们的json字符串,之后只用:
new JSONArray()
得到json数组,循环解析我们想要的属性:
var countsCheckBox = $("input[type='checkbox']:checked"); var booksid = []; for(var i=0;i<countsCheckBox.length;i++){ //使用[]取得元素是是一个domElement元素,取值需要使用.value, //如果使用countsCheckBox.eq(i) 则是一个Obkject元素,就可以使用val()取值 //alert(countsCheckBox[i].value); mysendbook_id = {}; mysendbook_id['book_id'] = countsCheckBox[i].value; booksid[i] = mysendbook_id; } //alert(booksid); var confirmdel= confirm('确认要删除吗?'); if(confirmdel){ //开始请求删除 $.ajax({ url:'selectdelbooks', data:JSON.stringify(booksid), type:'post', success:function(res){ alert("删除成功"); location.replace("/TheDemo/books/pageBooksShow"); } }); }
上面的js中我们把每一个选中的id放到一个mysendbook_id的“book_id”的属性中,再把这个对象放到booksid的数组中;到发送异步请求时使用
JSON.stringify(bookid)
格式化这个booksid数组,得到一个json的数组。
再看后台我们怎么接收:
一个是做一个类里面有一个list,这个list装的是只有一个属性为bookid的类,再使用注解@RequestBody
加到这个形参上。但是这样比较麻烦;
还有一种是从输入流里面获取数据,使用IOUtils.toString
把inputStream转为字符串,再使用new JSONArray(mybooksid);
을 사용하고
new JSONArray()
를 사용하여 json 배열을 가져오고 루프를 통해 원하는 속성을 구문 분석합니다.
<span style="font-family:SimSun;font-size: 10.5pt;"> </span><span style="font-family:KaiTi_GB2312;font-size:14px;"> @RequestMapping("selectdelbooks") public String selectdelbooks(HttpServletRequest request) throws Exception { ServletInputStream inputStream = request.getInputStream(); String mybooksid = IOUtils.toString(inputStream); JSONArray jsonarr = new JSONArray(mybooksid); List<String> book_id =new ArrayList<String>(); for (int i=0;i<jsonarr.length();i++){ book_id.add(((JSONObject)jsonarr.get(i)).getString("book_id")); }...</span>
js 위에서는 선택한 각 ID를 mysendbook_id의 "book_id" 속성에 넣은 다음 이 객체를 booksid 배열에 넣습니다. 비동기 요청을 보낼 때
JSON.stringify(bookid)
형식을 사용합니다. 이 booksid 배열을 변환하여 json 배열을 얻습니다.
백그라운드에서 어떻게 수신하는지 살펴보겠습니다.
첫 번째는 목록으로 클래스를 만드는 것입니다. 이 목록에는 bookid라는 속성이 하나만 있는 클래스가 포함되어 있으며, 주석@을 사용하여 이를 추가합니다. RequestBody
이 형식 매개변수에 대한 것입니다. 하지만 이것이 더 문제가 됩니다. 또 다른 방법은 입력 스트림에서 데이터를 가져오고 IOUtils.toString
을 사용하여 inputStream을 문자열로 변환한 다음 new JSONArray(mybooksid);
이 json 배열을 가져오세요
각 json에서 book_id의 속성 값을 가져옵니다
rrreee이런 식으로 우리는 선택한 id 값이 포함된 목록을 얻습니다.
데이터베이스의 정보: 사례를 읽으신 후 방법을 마스터하신 것 같습니다. 이 기사에서 더 흥미로운 정보를 얻으려면 오세요. PHP 중국어 웹사이트의 다른 관련 기사에도 주목하세요!
추천 자료:
위 내용은 Ajax에서 배열을 백그라운드로 전달하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!