ajax中的json字符串的组织与传递方法

本文介绍了如何在前端使用easyUI组件获取表单数据,组织成JSON字符串,并通过AJAX调用WebService进行数据传输,包括camid、名称等参数的处理和传递技巧。

ajax中的json字符串的组织与传递方法:
一、html元素与easyUI元素的取值方法:

var cameraNameStr = $("#cameraName").textbox('getValue');
        var IPAddressStr = $("#IPAddress").textbox('getValue');
        var portStr = $("#port").textbox('getValue');
        var UserNameStr = $("#UserName").textbox('getValue');
        var passwordStr = $("#Password").textbox('getValue');
        var modelStrTemp = $("#model").combobox('getText');
        var codecStrTemp = $("#codec").combobox('getText');
        var inputModeStr = $("#inputMode").combobox('getText');
		var inputChannelStr = $("#inputChannel").textbox('getValue');
		var validStr = $("#valid")[0].checked ? 1 : 0;
		var camid = cameraId + 1;

二、前端页面中组织json字符串:注意此处的json字符串省略了行的定义,也就是说这只定义了一行,也就是第一行,如果是多行,则要按照有行的定义方法。如:{h:[{‘a’:‘1’,‘b’:‘2’}]},这里省略行定义主要是配合webservice接口中取值的方法。

var jsonString = '{"camid": ' + camid + ',"camname": "' + cameraNameStr + '", "camip": "' + IPAddressStr + '", "camport": "' + portStr + '", "camuser": "' + UserNameStr + '", "campassword": "' + passwordStr + '", "cammodel": ' + modelStr + ', "camcodec": ' + codecStr + ', "inputmode": "' + inputModeStr + '", "inputchannel": ' + inputChannelStr + ', "camvalid": ' + validStr + '}';

三、ajax调用WEBMETHOD方法并传递json字符串的方法:注意json字符串以text方式传递给后端WEBMETHOD方法时要设置 :dataType:“text”,还有一种方式就是以json对象方式传给后端方法,此处暂不讲解。

 function save() {
		var jg;
        var cameraNameStr = $("#cameraName").textbox('getValue');
        var IPAddressStr = $("#IPAddress").textbox('getValue');
        var portStr = $("#port").textbox('getValue');
        var UserNameStr = $("#UserName").textbox('getValue');
        var passwordStr = $("#Password").textbox('getValue');
        var modelStrTemp = $("#model").combobox('getText');
		var modelStr = 0;
		switch (modelStrTemp) {
			case "--":
				modelStr = 0;
				break;
            case "海康":
                modelStr = 1;
				break;
            case "大华":
                modelStr = 2;
				break;
            case "宇视科技":
                modelStr = 3;
				break;
            case "华安":
                modelStr = 4;
				break;
            case "信路威":
                modelStr = 5;
				break;
            case "测试":
                modelStr = 6;
				break;
		}


        var codecStrTemp = $("#codec").combobox('getText');
		var codecStr = 0;
        switch (codecStrTemp) {
            case "主码流":
                codecStr = 0;
                break;
            case "辅码流":
                codecStr = 1;
                break;
        }
      
        var inputModeStr = $("#inputMode").combobox('getText');
		var inputChannelStr = $("#inputChannel").textbox('getValue');
		var validStr = $("#valid")[0].checked ? 1 : 0;
        
		var camid = cameraId + 1;
       
		var jsonString = '{"camid": ' + camid + ',"camname": "' + cameraNameStr + '", "camip": "' + IPAddressStr + '", "camport": "' + portStr + '", "camuser": "' + UserNameStr + '", "campassword": "' + passwordStr + '", "cammodel": ' + modelStr + ', "camcodec": ' + codecStr + ', "inputmode": "' + inputModeStr + '", "inputchannel": ' + inputChannelStr + ', "camvalid": ' + validStr + '}';
		console.log(jsonString);
		

        $.ajax({
            type: "post",
            url: "cameraconfig.aspx/SendDataToWebservice",//格式为"文件名(含后缀)/方法名"
            contentType: "application/json; charset=utf-8",//发送信息至服务器时内容编码类型
            dataType: "text",//服务器返回的数据类型
            data: "{URL:'" + camconfigIp + "',camObj: '" + jsonString + "'}",
            async: false,
			success: function (data) {
                var hh = JSON.parse(data);
				var jg = JSON.parse(hh.d)
                $.messager.alert('信息提示', '数据保存成功!', "info", function () {
                    parent.closeCameraConfigWin();
                });
               
            }, error: function () {
                alert("数据获取失败!");
            }
        });
        return jg;
	}
在C#中,通常通过前端使用 jQuery 的 `$.ajax` 方法向控制器发送 AJAX 请求,并传递 JSON 数据。这种交互方式广泛应用于 ASP.NET MVC 或 ASP.NET Core 项目中,以实现异步通信并更新页面的部分内容。以下是一个完整的实现示例: ### 发送 JSON 数据到控制器的 AJAX 请求 ```javascript var dataToSend = { username: "user", password: "pass" }; $.ajax({ url: '/Home/Login', // 控制器的 URL type: 'POST', contentType: 'application/json; charset=utf-8', data: JSON.stringify(dataToSend), // 将 JavaScript 对象转换为 JSON 字符串 success: function (response) { console.log('Server response:', response); $('#some-section').html(response); // 更新页面的部分内容 }, error: function (xhr, status, error) { console.log('An error occurred: ' + error); } }); ``` 在控制器中,可以通过定义一个 JSON 数据结构匹配的模型类来接收数据。例如: ```csharp public class LoginModel { public string Username { get; set; } public string Password { get; set; } } ``` 然后,在控制器中接收数据并返回响应: ```csharp [HttpPost] public IActionResult Login([FromBody] LoginModel model) { if (ModelState.IsValid) { // 处理登录逻辑 return Json(new { success = true, message = "登录成功" }); } return Json(new { success = false, message = "无效的输入" }); } ``` ### 注意事项 1. **`JSON.stringify` 的使用**:必须将 JavaScript 对象转换为 JSON 字符串,以便服务器能够正确解析请求数据 [^2]。 2. **`contentType` 设置**:需要将 `contentType` 设置为 `application/json`,以确保服务器知道接收到的是 JSON 数据 [^1]。 3. **模型绑定**:在 ASP.NET Core 中,使用 `[FromBody]` 特性来从请求体中提取 JSON 数据并绑定到模型对象 [^3]。 通过这种方式,可以实现前端后端控制器之间的高效通信,并确保数据结构的完整性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值