serializeArray()을 사용하여 json 개체로 일부 양식 값을 serialize하고 양식 값을 서비스의 WebMethod
으로 POST하려고합니다. POST 양식 값을 ajax 호출을 통해 WebMethod에
<script type="text/javascript">
$(document).ready(function() {
$("#btn").click(function() {
var foobar = $(this).closest('#add-question').serializeArray();
$.ajax({
type: "POST",
url: "/Services/QuestionsService.asmx/SubmitQuestion",
data: "{foo:[" + JSON.stringify(foobar) + "]}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
$("#btn").text(data.d);
}
});
});
});
</script>
그리고 서비스 :
나는 추가 권장 비슷한 질문을 발견했다.요구 포맷이 예기치 않게 '/ SubmitQuestion'로 끝나는 URL에 대한 인식되지 않는 :
그러나 나는 서비스에 500 오류가 있었다. 이 첫 번째 문제를 해결하기 위해 듯의 Web.config에[WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)] [System.Web.Script.Services.ScriptService] public class QuestionsService : System.Web.Services.WebService { [WebMethod] public string SubmitQuestion(string foo) { //do something with foo return "Message Sent"; } }
<system.web> <webServices> <protocols> <add name="HttpGet"/> <add name="HttpPost"/> </protocols> </webServices> </system.web>
:
System.InvalidOperationException : 누락 된 매개 변수 : foo는하지만 지금은 양식 매개 변수
foo
가 누락 아직 명확하게 공급 된 것을 불평 서비스에서 오류가 발생합니다. System.Web.Services.Protocols.HttpServerProtocol.ReadParameters에서 System.Web.Services.Protocols.UrlParameterReader.Read (HttpRequest를 요청)에 System.Web.Services.Protocols.ValueCollectionParameterReader.Read (NameValueCollection은 컬렉션) 에서 () 012.WebServiceHandler.CoreProcessRequest()
누락 된 항목이 있습니까?
var obj = { foo: 'bar' };
내가 잘못 serializeArray()
사용하고 있습니다 :
는 내가 같은 간단한 JSON 객체를 전달 경우 웹 메소드 좋은 안타가 serializeArray()
에 문제가있을 것 같아요?
{
foo: [
[
{
"name": "__EVENTTARGET",
"value": ""
},
{
"name": "__EVENTARGUMENT",
"value": ""
},
{
"name": "__VIEWSTATE",
"value": "RHqOeKRh4e+2IZH9ZdPatwEklxypUzemNeDv7sO4l8vIR2TrECRFZvalrpbvVre0e6gkY9ZG3618dtU3BhYFW3YNn2y6VqeZlL5hmG/WPLTtZN8lhDkEl1bGOGWBsY52zVxWECkAC2hGtHwF5plmKsL3sHp3nFxh3yzWoGP1LwAc4sAZ/rgKvozqCp/4FfB6P4jBUQnL7Q5EkNsjWBntsXbUswC3cJpS22vgoJFHDh8Lm9n/VGzC86FUWipvGmOJ9/KVSlUBbJE3J0Fs6UZi+E6T1Ql+I8XBZlZOzDlbq40="
},
{
"name": "ctl00$MainContent$txtName",
"value": "name field"
},
{
"name": "ctl00$MainContent$txtEmailAddress",
"value": "email address field"
},
{
"name": "ctl00$MainContent$txtLocation",
"value": "location field"
},
{
"name": "ctl00$MainContent$chkAnonymous",
"value": "on"
},
{
"name": "ctl00$MainContent$txtQuestion",
"value": "question field"
},
{
"name": "__EVENTVALIDATION",
"value": "ileV4/vPquayqiSQJEAvq1oHpIAkHN+fy4QhqOrQpp7NxE4z15rvbTH6BfaSCFFwt96JAp1aqQzuOFCTzc6KSEE6iWDmSDRcJWWOzyksSoXpAMBwLk3F6oAaWa4EIjEUb+2b/PJobySl5BaU3TG0JCZyHK2fxj5HXd8DG89gnmVXemTwq1Ax4BgJw1Z5z1uT8Sw7Xk6inUHAZ0NJH4QdTQ=="
}
]
]
}
data: {'foo': JSON.stringify(foobar)},
또는
data: {foo: JSON.stringify(foobar)},
데이터가하는 것처럼 데이터를 전송할
'$ ('# 추가 질문') serializeArray()'그것의 출력은 무엇인가.? – Jai
폼을 .serializeArray()해야합니다. 이'$ ('# add-question')'귀하의 양식의 ID입니까? – Jai
@Jai, 네, 그건 제 형식입니다.질문을 이미지에 붙여 넣기보다는 이미지에 출력을 추가하겠습니다. – DGibbs