2011-11-17 3 views
2

jQuery 1.3.2를 사용하는 ASP.NET MVC 애플리케이션이 있습니다.jQuery 버전을 업데이트하면 Ajax로드가 깨졌습니다.

여러 페이지에서 여러 항목을 선택할 수있는 표가있는 경우 .load을 호출하여 항목의 세부 정보를로드합니다. 상기 선택된 식별자를 포함 s 명명 된 어레이를 포함

this.$container.load(this.url, data, function() { 
    // Show results 
}); 

data.

public ActionResult SomeAction(object[] s) 

로 전송되고 모든 것이 큰 일이었다

s 2 
s 1 

s = [ "2", "1" ]

jQuery를 1.3.2 사용 data이 게시 될 것입니다.

s[] 2 
s[] 1 

해야합니까를 : jQuery를 지금처럼 data를 올리기 때문에

나는 최신 버전 (1.5.1) 지금 내 컨트롤러는 s의 값을받지 않습니다에 jQuery 라이브러리를 변경하려 컨트롤러가 값 ( s[1], s[2])을 수신 할 수 있도록 인덱스를 할당해야합니까? 컨트롤러 동작의 서명이나 배열 생성 방법을 변경해야합니까? 현재 데이터를 생성하는 자바 스크립트는 1.3.2에서 일 경우 jQuery.ajaxSettings.traditional = true을 설정하여 이전 동작으로 되돌릴 수 있어야 단순히

var s = new Array(); 
for (var id in this._selected) { 
    // Some checks 
    s.push(id); 
} 

답변

2

입니다. 이것은 jQuery 1.4의 변경 사항이며이 설정은 이전 버전과의 호환성을 허용합니다.

자세한 내용은 the manual entry for $.param을 참조하십시오.

사용하여 예제 데이터 :

var data = {s: ["2", "1"]}; 

// jQuery 1.7 
$.param(data); // "s%5B%5D=2&s%5B%5D=1" 
jQuery.ajaxSettings.traditional = true; 
$.param(data); // "s=2&s=1" 

// jQuery 1.3.2 
$.param(data); // "s=2&s=1" 
+0

감사합니다,이 도움이 될 것입니다,하지만 난 일을하는 새로운 방법을 지원하기 원한다면, 내가이 있거나 나는에 의존 할 필요가 무엇을 수정할 수 있습니다 전통 설정? – Brandon

+0

@Brandon AFAIK (MVC 전문가가 아님)이 작업을 수행하는 "방법"입니다. – lonesomeday

관련 문제