AngularJs Post 提交 改造

C#后台可通过Request["xxxx"].ToString()进行获取相对应的Form表单参数

Html 代码

<!DOCTYPE html>
<html ng-app="formApp">
	<head>
		<meta charset="utf-8">
		<title>ngPost提交测试</title>
		<script type="text/javascript" src="js/lib/angular.min.js" ></script>
	</head>
	<body >
			<form name="form1" ng-controller="formController" method="post">
		        类型名:<input type="text" name="act" ng-model="formData.act" /><br />
		        职位名:<input type="text" name="name" ng-model="formData.name"/><br />
		        <button ng-click="processForm()" ng-disabled="!form1.$valid">提交</button>
		    </form>
	</body>
</html>

AngularJs 控制器改造

        var app = angular.module("formApp", [], function ($httpProvider) {
            $httpProvider.defaults.headers.post["Content-Type"] = "application/x-www-form-urlencoded;charset=utf-8";
            $httpProvider.defaults.headers.put['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8';
            var param = function (obj) {
                var query = "", name, value, fullSubName, subName, subValue, innerObj, i;
                for (name in obj) {
                    value = obj[name];
                    if (value instanceof Array) {
                        for (i = 0; i < value.length; ++i) {
                            subValue = value[i];
                            fullSubName = name + "[" + i + "]";
                            innerObj = {};
                            innerObj[fullSubName] = subValue;
                            query += param(innerObj) + "&";
                        }
                    } else if (value instanceof Object) {
                        for (subName in value) {
                            subValue = value[subName];
                            fullSubName = name + "[" + subName + "]";
                            innerObj = {};
                            innerObj[fullSubName] = subValue;
                            query += param(innerObj) + "&";
                        }
                    } else if (value !== undefined && value !== null) {
                        query += encodeURIComponent(name) + "=" + encodeURIComponent(value) + "&";
                    }
                }
                return query.length ? query.substr(0, query.length - 1) : query;
            };
            $httpProvider.defaults.transformRequest = [function (data) {
                return angular.isObject(data) && String(data) !== "[object File]" ? param(data) : data;
            }];
        });

调用方法:

        app.controller("formController", function ($scope, $http) {
            $scope.formData = {};
            $scope.processForm = function () {
                console.log("测试一下"+$scope.formData);
                $http.post("http://localhost:9901/Service/JobInterface.ashx",$scope.formData).success(function(data){
                    console.log(data);
                }).error(function(data){
                    console.log(data);
                    console.log("失败");
                });
            }
        });

C#后台编写,使用一般处理程序进行编写接口

        #region 全局变量
        bool dev = true;
        #endregion
        #region 处理HTTP请求
        public void ProcessRequest(HttpContext context)
        {
            context.Response.Cache.SetNoStore();//禁止自动缓存
            context.Response.Clear();
            context.Response.ContentType = "application/json";
            if (dev)
            {
                context.Response.Headers.Add("Access-Control-Allow-Origin", "*");
                context.Response.Headers.Add("Access-Control-Allow-Headers", "X-Requested-With");
            }
            string action = "";
            string temp = "";
            try
            {
                action = context.Request["act"].ToString();
                //action = context.Request.Form["act"].ToString();
                temp = GetActionResult(action);
            }
            catch (Exception e)
            {
                temp = e.ToString();
            }
            //输出数据
            context.Response.Write(temp);
        }
        #endregion
        #region 返回操作结果
        /// <summary>
        /// 返回操作结果
        /// </summary>
        /// <param name="action">操作</param>
        /// <returns></returns>
        private static string GetActionResult(string action)
        {
            string result = "无数据";
            switch (action)
            {
                case "GetJobByPage":
                    result = GetJobInfoByPage();
                    break;
                case "AddJob":
                    result = AddJob();
                    break;
            }
            return result;
        }
        #endregion

        #region 业务逻辑
        #region 添加
        /// <summary>
        /// 添加职位
        /// </summary>
        /// <returns></returns>
        private static string AddJob()
        {
            Job model = new Job();
            model.ID = 0;
            model.Name = HttpContext.Current.Request["name"];
            //model.Name = HttpContext.Current.Request.Form["name"].ToString();
            return JobController.AddJob(model);
        }
        #endregion


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JNI(Java Native Interface)是 Java 虚拟机 (JVM) 提供的一种机制,用于在 Java 代码和本地代码(C/C++)之间进行交互。因此,在 JNI 中进行网络请求和数据提交可以使用本地代码实现,比如使用 C 或 C++ 的网络库来完成请求和提交。 在 JNI 中进行 post 提交,需要以下步骤: 1. 在本地代码中引入网络库,例如 libcurl。 2. 实现 JNI 接口方法,该方法将会被 Java 代码调用。 3. 在 JNI 方法中使用网络库进行 post 提交。 4. 将提交结果返回给 Java 代码。 下面是一个简单的 JNI post 提交示例: ```c #include <jni.h> #include <curl/curl.h> JNIEXPORT jstring JNICALL Java_com_example_MyClass_postData(JNIEnv *env, jobject obj, jstring url, jstring data) { CURL *curl; CURLcode res; const char *post_url = (*env)->GetStringUTFChars(env, url, NULL); const char *post_data = (*env)->GetStringUTFChars(env, data, NULL); char *response = malloc(1024); curl_global_init(CURL_GLOBAL_DEFAULT); curl = curl_easy_init(); if(curl) { curl_easy_setopt(curl, CURLOPT_URL, post_url); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, post_data); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback); curl_easy_setopt(curl, CURLOPT_WRITEDATA, response); res = curl_easy_perform(curl); curl_easy_cleanup(curl); } curl_global_cleanup(); (*env)->ReleaseStringUTFChars(env, url, post_url); (*env)->ReleaseStringUTFChars(env, data, post_data); return (*env)->NewStringUTF(env, response); } size_t write_callback(void *ptr, size_t size, size_t nmemb, void *userdata) { sprintf(userdata, "%s%s", (char*) userdata, (char*) ptr); return size * nmemb; } ``` 这里实现了一个名为 `postData` 的 JNI 方法,该方法接收两个参数:`url` 和 `data`,分别表示提交的地址和数据。在该方法中,我们使用 libcurl 库进行 post 提交,并将提交结果保存在 `response` 变量中。最后,将 `response` 转换为 jstring 类型,并返回给 Java 代码。 需要注意的是,在 JNI 中需要对传递的 jstring 对象进行释放。在这个示例中,我们使用了 `ReleaseStringUTFChars` 方法来释放 `url` 和 `data` 对象,以及在 `write_callback` 函数中释放 `userdata` 对象。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值