jQuery ajax 호출에 여러 파라미터 전달
aspx 페이지에서 webmethod를 호출하기 위한 다음 jquery 코드가 있습니다.
$.ajax({
type: "POST",
url: "popup.aspx/GetJewellerAssets",
contentType: "application/json; charset=utf-8",
data: '{"jewellerId":' + filter + '}',
dataType: "json",
success: AjaxSucceeded,
error: AjaxFailed
});
그리고 여기 웹 메서드의 시그니처가 있습니다.
[WebMethod]
public static string GetJewellerAssets(int jewellerId)
{
이거 잘 돼.
하지만 이제 웹 메서드에 두 개의 매개 변수를 전달해야 합니다.
새로운 웹 방식은 이렇게 생겼다
[WebMethod]
public static string GetJewellerAssets(int jewellerId, string locale)
{
}
클라이언트 코드를 변경하여 이 새로운 메서드시그니처를 정상적으로 호출하려면 어떻게 해야 하나요?
편집:
다음 두 개의 구문이 작동했습니다.
data: '{ "jewellerId":' + filter + ', "locale":"en" }',
그리고.
data: JSON.stringify({ jewellerId: filter, locale: locale }),
여기서 filter 및 local은 로컬 변수입니다.
매개 변수를 전달하기 위해 문자열 연결을 사용하지 말고 데이터 해시를 사용하십시오.
$.ajax({
type: 'POST',
url: 'popup.aspx/GetJewellerAssets',
contentType: 'application/json; charset=utf-8',
data: { jewellerId: filter, locale: 'en-US' },
dataType: 'json',
success: AjaxSucceeded,
error: AjaxFailed
});
갱신:
코멘트 섹션에서 @Alex에 의해 제안되었듯이 ASP.NET PageMethod는 파라미터가 요구 내에서 JSON으로 인코딩되는 것을 상정하고 있습니다.JSON.stringify
데이터 해시에 적용해야 합니다.
$.ajax({
type: 'POST',
url: 'popup.aspx/GetJewellerAssets',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify({ jewellerId: filter, locale: 'en-US' }),
dataType: 'json',
success: AjaxSucceeded,
error: AjaxFailed
});
data: '{"jewellerId":"' + filter + '","locale":"' + locale + '"}',
데이터 객체에 필요한 만큼의 속성을 추가합니다.
$.ajax({
type: "POST",
url: "popup.aspx/GetJewellerAssets",
contentType: "application/json; charset=utf-8",
data: {jewellerId: filter , foo: "bar", other: "otherValue"},
dataType: "json",
success: AjaxSucceeded,
error: AjaxFailed
});
다음 방법을 사용하여 Ajax 호출을 사용하여 데이터를 전송하지 마십시오.
data: '{"jewellerId":"' + filter + '","locale":"' + locale + '"}'
사용자가 작은따옴표 또는 큰따옴표와 같은 특수문자를 잘못 입력한 경우 잘못된 문자열로 인해 Ajax 호출이 실패합니다.
다음 방법을 사용하여 문제 없이 웹 서비스를 호출합니다.
var parameter = {
jewellerId: filter,
locale : locale
};
data: JSON.stringify(parameter)
위 파라미터는 javascript 객체의 이름으로, 이를 Ajax 콜의 데이터 속성에 전달할 때 문자열화합니다.
$.ajax({
type: 'POST',
url: 'popup.aspx/GetJewellerAssets',
data: "jewellerId=" + filter+ "&locale=" + locale,
success: AjaxSucceeded,
error: AjaxFailed
});
데이비드 헤들런드를 제외한 모든 답변에서 json 문자열/오브젝트가 유효하지 않은 것을 발견한 사람이 있습니까?:)
JSON 개체의 형식은 다음과 같습니다. {"key":("value" | 0 | false)}.또한 오브젝트를 문자열화하는 것보다 문자열로 쓰는 것이 훨씬 덜 필요합니다.
var valueOfTextBox=$("#result").val();
var valueOfSelectedCheckbox=$("#radio:checked").val();
$.ajax({
url: 'result.php',
type: 'POST',
data: { forValue: valueOfTextBox, check : valueOfSelectedCheckbox } ,
beforeSend: function() {
$("#loader").show();
},
success: function (response) {
$("#loader").hide();
$("#answer").text(response);
},
error: function () {
//$("#loader").show();
alert("error occured");
}
});
덧붙이자면 [이 행은 Asp.net에서 완벽하게 기능하며, 웹 컨트롤 필드를 검색해 주세요.예를 들어 <%Fieldname%>
data: "{LocationName:'" + document.getElementById('<%=txtLocationName.ClientID%>').value + "',AreaID:'" + document.getElementById('<%=DropDownArea.ClientID%>').value + "'}",
전달되는 데이터의 모든 것은 올바른 형식의 문자열이어야 합니다.빈 데이터를 전달하는 경우 데이터 {}이(가) 작동합니다.그러나 매개 변수가 여러 개일 경우 올바른 형식을 지정해야 합니다.
var dataParam = '{' + '"data1Variable": "' + data1Value+ '", "data2Variable": "' + data2Value+ '"' + '}';
....
data : data Param
...
자세한 오류를 알 수 있도록 적절한 메시지파라미터를 가진 오류 핸들러를 사용하는 것이 가장 좋은 방법입니다.
json을 사용하여 여러 매개 변수를 성공적으로 전달했습니다.
data: "{'RecomendeeName':'" + document.getElementById('txtSearch').value + "'," + "'tempdata':'" +"myvalue" + "'}",
data: JSON.stringify({ "objectnameOFcontroller": data, "Sel": $(th).val() }),
컨트롤러 오브젝트명
언급URL : https://stackoverflow.com/questions/1916309/pass-multiple-parameters-to-jquery-ajax-call
'programing' 카테고리의 다른 글
Python: 간단한 설정/구성 파일을 저장하는 방법은 무엇입니까? (0) | 2023.02.26 |
---|---|
WordPress에서 현재 사용자의 역할을 아는 방법 (0) | 2023.02.26 |
jq: 문자열로 어레이를 인덱싱할 수 없습니다. (0) | 2023.02.26 |
$sce.trustAsResourceUrl() 글로벌 (0) | 2023.02.21 |
onEnter가 React-Router에서 호출되지 않음 (0) | 2023.02.21 |