C#使用jsonp进行跨域提交表单

跨域提交留言,并返回是否成功!

C#服务端:

public void FeedBackPost(string name, string email, string tel, string website, string desc, string thisIp, string sourse, string callBack)
        {
            try
            {
                Response.ContentType = "application/x-javascript";
                string str = callBack;
                if (thisIp==null)
                {
                    thisIp = "未取到IP";
                }
                string strSql = "";
                HSBY_DBEntities db = new HSBY_DBEntities();
                //验证ip短时间内是否提交太多
                Regex rx = new Regex(@"((?:(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d))))");
                if (rx.IsMatch(thisIp))
                {
                    strSql = @"select count(*) from fb_srv_main where ip='" + thisIp + "'";
                    int ipCount = db.ExecuteStoreQuery<int>(strSql).FirstOrDefault();
                    if (ipCount>10)
                    {
                        str += "([{\"请勿重复提交!\"}]);";
                        Response.Write(str);
                        return;
                    }
                }

                fb_srv_main newItem = new fb_srv_main();
                newItem.name = name;
                newItem.email = email;
                newItem.tel = tel;
                newItem.site = website;
                newItem.content_str = desc;
                newItem.ip = thisIp;
                newItem.creat_by = sourse;
                newItem.creat_on = DateTime.Now;
                _mainBLL.Create(ref validationErrors, newItem);

                //HttpContext context = new HttpContext();

                if (validationErrors.Count>0)
                {
                    str+=validationErrors[0].ErrorMessage;
                    Response.Write(str);
                    return;
                }
                FeedBackEmail( name,  email,  tel,  website,  desc,  thisIp,  sourse);

                str += "([{\"Rusltstr\":\"OK\"}]);";
                Response.Write(str);
                return;
            }
            catch (Exception ex)
            {
                Response.ContentType = "application/x-javascript";
                Response.Write(callBack + "([{\"Rusltstr\":\"出错了!\"}]);");
                return;
            }

        }

JS客户端:

//提交留言返回数据处理
function displayResult(data) {
               var iRusltstr=data[0].Rusltstr;
			   if(iRusltstr=="OK"){
				   		//关闭遮罩
						$("#submitmask").fadeOut(500);
						alert("提交成功!");
				   }else{
					   		$("#submitmask").fadeOut(500);
							alert(iRusltstr+" 请使用其他方式联系我们!");
					   }
           } 
//提交留言
function SubmitMsg(){
	var AllInput=$("#formwrap input");
	var iTextarea=$("#formwrap textarea");

		//获得焦点样式
		AllInput.focus(function(){AddFocusStyle($(this))});
		AllInput.blur(function(){AddFocusStyle($(this))});
		iTextarea.focus(function(){AddFocusStyle($(this))});
		iTextarea.blur(function(){AddFocusStyle($(this))});
		function AddFocusStyle(iInput){
				if(iInput.attr("style")=="" || iInput.attr("style")==null){
						iInput.attr("style","border:1px solid #bcbcbc;color:#7a7a7a;");
					}else{
							iInput.attr("style","");
						}

			}

		//丢失焦点验证
		AllInput.blur(function(){
				FormValiudat($(this));
			});

		//表单验证方法
		function FormValiudat($input){
				var promptStr="";
				var pattern = new RegExp("[~'!#$%^&*()-+_=]");
				if(pattern.test($input.val())){
					alert("非法字符!亲,请勿尝试注入哦!");
					return false;
				}

				switch($input.attr("id"))
				{
				case "name":
				  //姓
					if($input.val().length>10)
					{
						$("#redpoint_name").removeClass("hide");
						$input.focus();
						return false;
						}else{
								$("#redpoint_name").addClass("hide");
							}

				  break;
				case "email":
				  //email
					var reg = /^[a-z0-9]+([._\\-]*[a-z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$/;
					if (!reg.test($input.val())) {
					  	$("#redpoint_email").removeClass("hide");
						$input.focus();
						return false;
					}else{
							$("#redpoint_email").addClass("hide");
						}

				  break;
				  case "tel":
					//电话
					var isMobile=/^(?:13\d|15\d|18\d)\d{5}(\d{3}|\*{3})$/;
					var isPhone=/^((0\d{2,3})-)?(\d{7,8})(-(\d{3,}))?$/;
					if(!isMobile.test($input.val()) && !isPhone.test($input.val())){
						$("#redpoint_tel").removeClass("hide");
						$input.focus();
						return false;
					}else{
							$("#redpoint_tel").addClass("hide");
						}
				  break;
				  case "website":
				  if(!(/[^\d]/g).test($input.val())){
						$("#redpoint_website").removeClass("hide");
						$input.focus();
						return false;
					}else{
							$("#redpoint_website").addClass("hide");
						}
				  break;
				  case "desc":
					  var mainText=$input.val();
					 if(mainText.length>=100){
							alert("最多100个字!");
							return false;
						}
				  break;
				}
			return true;
			}

	//表单提交
	$("#formsubmit").click(function(){
		var $feedback_input=$("#formleft input");
			for(var i=0;i<$feedback_input.length;i++){
				var $thisInput=$($feedback_input[i]);
					if(!FormValiudat($thisInput))
					{
						return;
					};
				}
	//提交表单前打开遮罩
	$("#submitmask").fadeIn(500);

	   var url = "http://www.sparkdesign.cn:8888/MainAjax/FeedBackPost"
	   url = "http://www.sparkdesign.cn:8888/MainAjax/FeedBackPost?name="+$("#name").val()+"&email="+$("#email").val()+"&tel="+$("#tel").val()+"&website="+$("#website").val()+"&desc="+$("#desc").val()+"&thisIp="+$("#keleyivisitorip").html()+"&callback=displayResult"
	   $.getScript(url); 

		})

}
时间: 2024-08-26 23:21:48

C#使用jsonp进行跨域提交表单的相关文章

jquery Ajax 通过jsonp的方式跨域提交表单

Jquery Ajax可以通过jsonp的方式跨域提交表单,至于什么是跨域提交简单说就是你的客户端和服务端不在同一个域名下或端口号不同也可以叫做跨域. 前台代码: $.ajax({ type : 'get', async: false, url : '${pageContext.request.contextPath}/clue/uploadForm', dataType : 'jsonp', data: { mydata : JSON.stringify(obj,fm), formId : f

使用jQuery实现跨域提交表单数据

我们在WEB开发中有时会遇到这种情况,比如要从A网站收集用户信息,提交给B网站处理,这个时候就会涉及到跨域提交数据的问题.本文将给您介绍如何使用jQuery来实现异步跨域提交表单数据. 在jQuery中,我们使用json数据类型,通过getJSON方法来实现从服务端获取或发送数据,而当要向不同远程服务器端提交或者获取数据时,要采用jsonp数据类型.使用这种类型的话,会创建一个查询字符串参数 callback=? ,这个参数会加在请求的URL后面.服务器端应当在JSON数据前加上回调函数名,以便

js XMLHttpRequest + FormData 跨域提交表单上传文件

funUploadFile : function(file){ var self = this; // 在each中this指向没个v 所以先将this保留 var formdata = new FormData(); formdata.append("index", file.index); formdata.append("fileList", file); var xhr = new XMLHttpRequest(); if ("withCreden

JSONP跨域提交表单

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>Untitled Page</ti

js跨域提交表单【详细教程,包解决】

下面是前台js代码部分 $.ajax({ url: "http://tttcuxiao.uz.taobao.com",<span style="white-space:pre"> </span>//这里是提交url例子链接 type: "get",<span style="white-space:pre"> </span>//jsonp必须是get方式,post不支持,注意 da

JQuery 异步提交表单

1.使用post提交方式 2.构造表单的数格式 3.结合form表单的submit调用ajax的回调函数. 使用 jQuery 异步提交表单代码: 代码如下: <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>无标题页</title> </head> <script src="js/jquery-1.4.2.js"></sc

JSONP解决跨域问题,防止表单重复提交,防止XSS攻击

一.跨域问题:能够正常请求,但是没有办法获取到响应结果 解决方案一:设置请求头,在请求的资源中设置Access-Control-Allow-Origin请求头 //3.设置请求头 response.setHeader("Access-Control-Allow-Origin", "*"); 二.JSONP解决跨域问题 普通的跨域访问问题,浏览器会进行拦截,凡是src属性的都不会拦截 ajax:http://www.a.com:8080/a/AServlet JSON

代替jquery $.post 跨域提交数据的N种形式

跨域的N种形式: 1.直接用jquery中$.getJSON进行跨域提交 优点:有返回值,可直接跨域: 缺点:数据量小: 提交方式:仅get (无$.postJSON) $.getJSON("http://www.sendnet.cn/?callback=?" , { UserId: 1001 }, function (data) { alert(data.info); }); $.ajax({ type: "Get", url: "http://www.

妥善的ajax跨域提交post请求的解决方案,结合PHP与jquery

开发背景: 在开发中采用了一个新的架构,将大部分客户的留言功能集成到一个公共API提交保存,采用不同的用户名区分,供客户查询自己网站的留言,这样节约了客户网站的资源,也提升了维护性. 那么在提交时不能采用直接的post提交,否则会产生跳转,使访客混乱,所以采用ajax提交留言内容至公共服务器:http://wx.igooda.cn/index.php/messagesave,但尝试后发现不能提交post请求,百度后查询结果是跨域只能是get请求,这对留言内容多的来说,是不可行的.还有一种解决方案