【Side Project】 点菜单功能实作 - 前台资料传到後台

这篇我们接着做:

  1. 取得网页上栏位资料
  2. 资料送往後台
  3. 资料写回资料库

取得栏位资料

在送资料到後台之前我们先来取得element上面的资料。
程序码:

$("#menu_body > tr").each(function () {
        alert(
            $(this).children(".item").text() + ":"
            + $(this).children(".price").text() + ":"
            + $(this).children(".count").children("div").children("input").val()
        )
        
    })

我们可以透过JQery的选择器帮我们想要的栏位,最後再透过.text().val()
取得栏位中的资料。

资料传回後台

  1. 开启Customer.cshtml,将我们的按钮新增click事件
$("#submitBtn").click(function () {
// do something
}
  1. 接着在里面添加.ajax()
$.ajax({
        url: "@Url.Action("Test")",
            type: "post",
            data: { "data": data},
        success: function (data) {

        },
        error: function (xhr, ajaxOptions, thrownError) {
            alert(xhr.status);
            alert(xhr.responseText);
            alert(thrownError);
        },
        complete: function () {

        }

        })

这边@Url这个写法是cshtml中特有的写法,能直接帮忙指定对应Controller中的function()
3. 将菜单资料转成json格式

var datamap = {}
        $("#menu_body > tr").each(function () {
            
            var count = $(this).children(".count").children("div").children("input").val()
            
            if (count > 0) {//有点餐的才写入
                var uid = $(this).attr("id").replace("uid", "")//去头"uid",只留数字部分
                item = $(this).children(".item").text()
                price = $(this).children(".price").text()
                datamap[uid] = {
                    "uid":uid,"item": item, "price":price,"count":count }
                
            }
               
        })
        
        //将资料转成 json格式
        var data = JSON.stringify(datamap)
        alert(data.toString())

这边需要注意,请勿使用map来写,map 与json的传送在某些版本上是有问题的。
4. 完成整个click事件

$("#submitBtn").click(function () {
        var datamap = {}
        $("#menu_body > tr").each(function () {
            
            var count = $(this).children(".count").children("div").children("input").val()
            
            if (count > 0) {//有点餐的才写入
                var uid = $(this).attr("id").replace("uid", "")//去头"uid",只留数字部分
                item = $(this).children(".item").text()
                price = $(this).children(".price").text()
                datamap[uid] = {
                    "uid":uid,"item": item, "price":price,"count":count }
                
            }
               
        })
        
        //将资料转成 json格式
        var data = JSON.stringify(datamap)
        alert(data.toString())
        $.ajax({
        url: "@Url.Action("CreateOrder")",
            type: "post",
            data: { "data": data},
        success: function (data) {

            //开启互动视窗
            $("#commitModal").modal('show');
        },
        error: function (xhr, ajaxOptions, thrownError) {
            alert(xhr.status);
            alert(xhr.responseText);
            alert(thrownError);
        },
        complete: function () {

        }

        })
    })

结语

我们现在已经可以把资料传到後台了,
下一篇会接着做一些资料的处理跟写入资料库


<<:  Day17 - 语音辨识神级工具-Kaldi part2

>>:  Day14:SwiftUI—ForEach、ScrollView

结束语&心得

30天一眨眼就结束了呢!每天坚持写一篇文章,下班回家後一边写一边又翻书查找资料,没想到都撑过来了! ...

如何将手机照片传到笔电--简单四招包搞定

无论你是安卓系统还是苹果系统,将照片传到笔电只需跟着下面这四招。保证有一招可以帮你解决问题,简单又方...

【从零开始的 C 语言笔记】第二篇-大家的开始 - Hello World & 档案创建介绍

不怎麽重要的前言 上一篇我们成功的安装好一个程序码编辑器了,接下来我们要来学习怎麽使用它了! 写程序...

【在 iOS 开发路上的大小事-Day21】透过 Firebase 来管理使用者 (Sign in with Apple 篇) Part1

▲ 图片取自网路 前情提要 Sign in with Apple 是 Apple 在 WWDC 2...

【左京淳的JAVA WEB学习笔记】第十三章 购物车

购物车采用session储存,结构为Map<String,Integer>。Key为is...