【发布时间】:2011-06-13 12:26:08
【问题描述】:
感谢 balexandre 和 rtiq,我的流程全部搞定了。正在调用我的 .ashx 文件,因此我知道部分代码正在运行,它会提醒我出现错误。当我跟踪 .NET 时,通过 context.Request["email"] 和 context.Request["optin"] 提取的变量为 NULL。
我知道有问题,但我看不到。我重新编辑了这篇文章以获得最新的代码。
在 HEAD 中的 jQuery
><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>
HTML
<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>
.ashx 中的代码隐藏
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 文件并且文件正在编译,请求的变量为空。以前的帮助很棒,如果有人可以帮助我解决最后一个问题,您将获得当天的金星! :)
在书籍中离线搜索后,这终于与balexandres .aspx方法一起为我工作了:
解决方案
$.post("/asynchronous/addEmail.aspx", {email: $(".emailConnectTextBox").val(),optin: $(".connectCheckbox").is(':checked')}, function(data) { alert('Successful Submission');});
【问题讨论】:
-
到目前为止,我已经使用了 balexandre 和 rciq 的答案来使其正确流动。我现在只是在 ajax 发送正确的内容而不是空值时遇到问题。