感谢balexandre和rtiq,我的工作流程已经全部解决。我的.ashx文件正在被调用,所以我知道部分代码正在运行,并且警告我错误。当我跟踪.NET时,通过context.Request[“ email”]和context.Request [“ optin”]引入的变量为NULL。
我知道有什么问题,但看不到。我重新编辑了这篇文章,以获取最新的代码。
<script type="text/javascript">
$(document).ready(function () {
$(".submitConnectButton").click(function (evt) {
evt.preventDefault();
alert("hello click");
alert($(".emailConnectTextBox").val());
$.ajax({
type: "POST",
url: "/asynchronous/insertEmail.ashx",
data: "{email: '" + $(".emailConnectTextBox").val() + "',optin: '" + $(".connectCheckbox").val() + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) { alert(msg.d); },
error: function (msg) { alert('Error:' + msg); }
});
});
});
</script>
<div class="emailConnect">
<asp:TextBox runat="server" ID="TextBox1" CssClass="emailConnectTextBox" BorderStyle="Solid"></asp:TextBox>
<asp:ImageButton id="connectButton" CssClass="submitConnectButton" runat="server" ImageUrl="~/Images/submit_btn.png" /><br />
<asp:CheckBox Checked="true" id="checkbox1" runat="server" CssClass="connectCheckbox" />
</div>
public class insertEmail : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
string strConnection = System.Configuration.ConfigurationManager.AppSettings["SQLConnectString"].ToString();
string email = context.Request["email"],
optin = context.Request["optin"];
string strSQL = "INSERT INTO Emails (emailAddress,optIn) VALUES('" + email.ToString() + "','" + optin.ToString() + "')";
SqlConnection Conn = new SqlConnection(strConnection);
SqlCommand Command = new SqlCommand(strSQL, Conn);
Conn.Open();
Command.ExecuteNonQuery();
Conn.Close();
context.Response.ContentType = "text/plain";
context.Response.Write("email inserted");
}
public bool IsReusable
{
get
{
return false;
}
}
}
表单和元素运行正常。我们只是得到这个NULL值而不能插入。Ajax正在正确调用.ashx文件,并且文件正在编译,所请求的变量为null。以前的帮助太棒了,如果有人可以帮助我解决这一问题,那么您将获得一天的金星奖!:)
经过一些脱机搜索之后,终于与balexandres .aspx方法结合使用了:
$.post("/asynchronous/addEmail.aspx", {email: $(".emailConnectTextBox").val(),optin: $(".connectCheckbox").is(':checked')}, function(data) { alert('Successful Submission');});
asynchronous
aspx
页面,addEmail.aspx
并删除除第一行外的所有HTMLaddEmail.aspx
将代码放在后面,例如:。
public void Page_Load(...)
{
insertEmail();
}
public void inserEmail() {
string email = Request["email"],
optin = Request["optin"];
string strSQL = "INSERT INTO Emails (emailAddress,optIn) VALUES('" + email.ToString() + "', optin)";
SqlConnection Conn = new SqlConnection(strConnection);
SqlCommand Command = new SqlCommand(strSQL, Conn);
Conn.Open();
Command.ExecuteNonQuery();
Conn.Close();
// Output
Response.Write("email inserted");
}
.ajax()
调用的主页中,将url
属性更改为url: "/asynchronous/insertEmail.aspx",
您将msg
在success: function (msg) {}
字符串中email inserted
不过,这是我一直在做的事情,而不是创建ASPX页面,而是使用不包含任何ASP.NET页面周期(加载速度更快)的ASHX(通用处理程序)页面,它是一个简单的页面。
如果要使用a Generic Handler
,则在内部asynchronous
文件夹中创建一个名为的文件inserEmail.ashx
,完整代码为:
public class insertEmail : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
string email = context.Request["email"],
optin = context.Request["optin"];
string strSQL = "INSERT INTO Emails (emailAddress,optIn) VALUES('" + email.ToString() + "', optin)";
SqlConnection Conn = new SqlConnection(strConnection);
SqlCommand Command = new SqlCommand(strSQL, Conn);
Conn.Open();
Command.ExecuteNonQuery();
Conn.Close();
context.Response.ContentType = "text/plain";
context.Response.Write("email inserted");
}
public bool IsReusable
{
get
{
return false;
}
}
}
并且,记得将您的url
财产更改为url: "/asynchronous/insertEmail.ashx",
从您的评论中,我意识到您的data
财产也不正确。
正确的是:
data: {
"email" : $(".emailConnectTextBox").val(),
"optin" : $(".connectCheckbox").val() },
您的完整ajax调用应为:
$.ajax({
type: "POST",
url: "/asynchronous/insertEmail.ashx",
data: {
"email" : $(".emailConnectTextBox").val(),
"optin" : $(".connectCheckbox").val()
},
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
alert(msg.d);
},
error: function (msg) {
alert('Error:' + msg.d);
}
});
并且您Response.Write
在通用处理程序中也应传递JSON字符串
因此,将tgis更改context.Response.Write("emailinserted");
为context.Response.Write("{d:'email inserted'});
就这样。
问题内容: 我想通过jquery ajax提交此表单,这是我所做的,并且不起作用。即表格提交与页面刷新,我没有看到响应,即在同一页面上打印数组。 的HTML PHP(submit.php) 问题答案: 使用此方法-出现一些语法错误,必须提交事件
问题内容: 所以假设我有3种形式 每个表单都有自己的提交按钮 现在假设我有另一种形式 其唯一的功能是同时提交所有其他3种形式。…现在这里是约束: 当submitAll提交后,它必须使用Ajax这样做,并且最好通过POST将输入的数据从所有其他3种形式转发到processor.php processor.php需要能够区分输入到哪种形式…然后分别处理每种形式的输入 我的问题是..什么是使proces
问题内容: 我正在使用以下jQuery代码通过AJAX提交表单。 代码完美运行,没有ajax。 但是,如果我通过Ajax加载表单,则无法正常工作。 我认为这是因为JavaScript加载后通过ajax加载了表单。 有什么办法吗? 问题答案: 如果使用jQuery 1.7+,则可以尝试使用.on()委托事件并绑定到具有相同类的所有将来的表单。尝试查找没有动态插入的最接近的父代,而不是$(docume
问题内容: 此代码正确吗?我正在尝试提交,如果文本区域再次为空,我也想提交。 我正在尝试上传: 谢谢… 问题答案: 用 代替 如果您使用的是最新版本的jquery。
问题内容: 我有一个带有名称和未定义输入数量的表单。 我想做某种jQuery.get或ajax或类似的事情,它将通过Ajax调用页面,并发送表单的所有输入。 我想一种方法是做类似的事情 但是我不完全知道所有的表格输入。是否有仅发送所有表单输入的功能部件或功能? 问题答案: 您可以使用Ajax表单插件中的ajaxForm / ajaxSubmit函数或jQuery序列化函数。 AjaxForm :
问题内容: 我在通过Jquery / ajax POST提交带有图像字段的表单(Django表单)时遇到一些问题。即时通讯在imagefield上返回“ Field required”验证错误。 我一直尝试通过添加formData来尝试不同的解决方案,但到目前为止没有任何结果。我在正确的轨道上吗?请指出正确的方向。谢谢! 更新:我可以将imagefield设置为required = false,但