[SQL] .NET 간단한 양식 AJAX와 JQUERY를 통해 제출
SQL.NET 간단한 양식 AJAX와 JQUERY를 통해 제출
나는이 balexandre 및 rtiq 모든 밖으로 일 덕분에 흐름을 가지고있다. 내가 코드의 일부가 작동 알 수 있도록 내 .ASHX 파일이 호출되고 그것은 오류로 저를 경고한다. 나는 .NET을 추적 할 때, context.Request [ "이메일"]와 context.Request [ "수신 선택"]를 통해 당겨 변수는 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 값을 받고 삽입 할 수있는 것은 아니다. 아약스 제대로 .ASHX 파일을 호출하고 파일을 컴파일, 요청 변수가 null입니다 .. 누군가가 당신이 하루에 골드 스타를 얻을 것, 내가이 마지막 꼬임을 얻을 수 있도록 할 수 있다면 이전에 도움이 굉장했다! :)
책의 일부 검색 오프라인 후이 마침내 balexandres에서 .aspx 방법과 함께 나를 위해 일한 :
$.post("/asynchronous/addEmail.aspx", {email: $(".emailConnectTextBox").val(),optin: $(".connectCheckbox").is(':checked')}, function(data) { alert('Successful Submission');});
해결법
-
==============================
1..
.
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"); }
당신은 성공에 MSG에있을 것이다 : 기능 (MSG)를 {} 문자열 이메일이 삽입
이것은 내가 항상 대신 ASPX 페이지를 만드는하지만, 무엇을, 난 (빠른 부하) 모든 ASP.NET 페이지주기를 포함하지 않는 ASHX (일반 처리기) 페이지를 사용하고 간단한 페이지입니다.
당신이 대신 일반 처리기를 사용하려는 경우, 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: { "email" : $(".emailConnectTextBox").val(), "optin" : $(".connectCheckbox").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.d); } });
및 일반 처리기에서 Response.Write를은 JSON 문자열을뿐만 아니라 통과해야
그래서, 변화 ( "이메일이 삽입") context.Response.Write는 TGIS; context.Response.Write ( "{D '이메일 삽입'})로;
그게 다야.
-
==============================
2.
$("button").click(function(){ var content = new Object(); content.email = $("#email").val(); content.option = $("#checkbox").val(); content = JSON.stringify(content); $.ajax({ async: false, type: "POST", url: aspxPage + "/" + function, //make sure root is set proper. contentType: "application/json;", data: content, dataType: "json", success: successFunction, error: errorFunction }); }); //Make sure the form is posted ..which is needed for ajax to submit. //the data part in code behind seems ok.
-
==============================
3.당신은 당신의 HTML 코드 및 제출 사용할 수 없습니다 때문에 양식이 없습니다. rciq가 쓴 사용 대신 클릭합니다.
당신은 당신의 HTML 코드 및 제출 사용할 수 없습니다 때문에 양식이 없습니다. rciq가 쓴 사용 대신 클릭합니다.
-
==============================
4.이 변경보십시오 :
이 변경보십시오 :
$("#connectButton").submit(function () { alert("hello click"); (...)
이에:
$("#connectButton").click(function (evt) { evt.preventDefault(); alert("hello click"); (...)
또한 당신은 ASP.NET 서버 컨트롤의 ID가 렌더링 된 DOM 제어 ID와 동일하지 않습니다 것을 기억해야합니다. 이것은 당신의 경고가 발생하지 않는 이유가 될 수 있습니다. 서버 컨트롤로 같은 페이지에 클라이언트 스크립트를 작성하는 경우, 당신은 스크립트 태그 이런 식으로 내부 클라이언트 ID를 '렌더링'할 수 있습니다 :
$("<%= connectButton.ClientID %>").click( ...
또 다른 한가지. 당신은 HEAD 스크립트에서 jQuery를 선택을 사용하는 경우 그들은 컨트롤을 찾기 위해 너무 일찍 발사 될 수 있습니다. DOM을 컨트롤을 만든 후이를 실행해야합니다. 이 작업을 수행하는 한 것은 '준비'이벤트를 사용하는 것입니다 :
http://api.jquery.com/ready/
from https://stackoverflow.com/questions/6330384/net-simple-form-submit-via-ajax-and-jquery by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL 쿼리는 값 목록에 여러 범위에 대한 일치하는 번호 목록을 번역하기 (0) | 2020.07.15 |
---|---|
[SQL] 트리 구조의 모든 구성원을 찾기 (0) | 2020.07.15 |
[SQL] 어떻게 MS Access 데이터베이스 페이징을 + 검색하려면? (0) | 2020.07.15 |
[SQL] SQL 서버 2008 : INSERT하지 존재하는 경우는, 고유의 열을 유지 (0) | 2020.07.15 |
[SQL] SQL 쉼표로 구분 컬럼 => 행에 다음 합계 합계? (0) | 2020.07.15 |