- создайте в корневом каталоге вашего сайта новую папку с именем
asynchronous
- создайте новую
aspx
страницу с именем addEmail.aspx
и удалите весь HTML, кроме 1-й строки - внутричто
addEmail.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 я использую страницу ASHX (универсальный обработчик), которая не содержит какого-либо цикла страниц ASP.NET (быстрее загружается), и это простая страница.
если вы хотите использовать 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("email inserted");
на context.Response.Write("{d:'email inserted'});
вот и все.