복붙노트

[JQUERY] 문자열을 반환하는 ASP.NET MVC $ .post 호출 ...있는 jqGrid에 대한 형식 도움이 필요

JQUERY

문자열을 반환하는 ASP.NET MVC $ .post 호출 ...있는 jqGrid에 대한 형식 도움이 필요

해결법


  1. 1.당신이있는 jqGrid에 대한 문제를 해결하기 위해 시도 할 경우에만 다른 방법을 선택할 수 있습니다.

    당신이있는 jqGrid에 대한 문제를 해결하기 위해 시도 할 경우에만 다른 방법을 선택할 수 있습니다.

    당신은 editoptions 또는 SearchOptions는 검색의 dataUrl 및 buildSelect 속성 대신 값 속성을 사용할 수 있습니다. 이 기능은 AJAX의 사용을 위해 특별히 소개합니다. dataUrl의 정의하는 양식과 같은 결과를 제공하는 URL

    <select><option value="1">One</option> <option value="2">Two</option></select>
    

    당신이 당신의 사용자 정의 기능 buildSelect 도움이 될 서버에서 JSON 결과를 반환하는 easer이기합니다. 매개 변수로 ... <옵션>는 서버에서 데이터 전송을 수신하고이 문자열이 <선택> 반환해야합니다. 길에서 당신은 더 나은 결과를 얻을 것입니다.

    당신이 당신의 옛날 방식에 숙박하기로 결정하는 경우 적어도 다음 코드를 수정해야

    foreach (var q in query)
    {
         if (sb.Length != 0)
             sb.Append(';');
         sb.Append(q.Destination); // instead of sb.Append("ID");
         sb.Append(':');
         sb.Append(q.Destination);
    }
    

    하는 대신 "페덱스 : 페덱스; :; 인 타임 인 타임 TNT TNT" "; ID 페덱스 : ID 인 타임, ID : TNT를;".

    업데이트 : 당신은 작은 예를 들어 물었다. 당신은 예를 들어 목록 <문자열>와 같은 목적지 문자열의 모든 다른 값을 얻을 수 있습니다 우리를하자이 방법의 이름은 GetAllDestinations입니다. 그런 다음 dataUrl에서 사용하는 액션처럼 볼 수

    public JsonResult GetDestinationList() {
        List<string> allDestinations = GetAllDestinations();
        Json(allDestinations, JsonRequestBehavior.AllowGet);
    }
    

    당신이 다음에 대해 정의 할 수있는 jqGrid의 editoptions 또는 SearchOptions는 검색의 액션 내부를 사용하려면

    { name: 'destinations', ditable: true, edittype:'select',
      editoptions: { dataUrl:'<%= Url.Action("GetDestinationList","Home") %>',
                     buildSelect: function(data) {
                         var response = jQuery.parseJSON(data.responseText);
                         var s = '<select>';
                         if (response && response.length) {
                             for (var i = 0, l=response.length; i<l ; i++) {
                                 var ri = response[i];
                                 s += '<option value="'+ri+'">'+ri+'</option>';
                             }
                         }
                         return s + "</select>";
                     }
                    }
    }
    

    당신은 HTTP GET 당신이 JSON (allDestinations)를 사용할 수 있습니다 당 사용되는 행동을하지 않을 경우; 대신 JSON의 (allDestinations, JsonRequestBehavior.AllowGet); GetDestinationList 행동하지만,있는 jqGrid 옵션 추가 옵션 목록에 추가

    ajaxSelectOptions: { type: "POST" }
    

    2 업데이트 : 답은 이미 오래되었습니다. 중간에 buildSelect가 호출됩니다있는 jqGrid의 코드가 변경되었습니다. (포스트 및 예를 들어 게시물을 참조)하기 전에 지금 buildSelect이 jQuery.ajax의 성공 핸들러 내부에 사용됩니다 대신 전체 핸들러의 (여기 참조). 있는 jqGrid 라인의 현재 버전에 따라서

    var response = jQuery.parseJSON(data.responseText);
    

    필요하지 않습니다. 데이터는 일반적으로 데이터 JSON 그래서 라인들 파싱

                     buildSelect: function(data) {
                         var response = jQuery.parseJSON(data.responseText);
    

    코드에서 위에서 교체 할 수 있습니다

                     buildSelect: function(response) {
    

  2. 2.이것은 또 다른 대안이다

    이것은 또 다른 대안이다

    [컨트롤러 방법]

      [HttpGet]
        public ActionResult SchoolList()
        {
            //Get Schools
            var qry = SchoolManager.GetAll();
    
            //Convert to Dictionary
            var ls = qry.ToDictionary(q => q.SchoolId, q => q.Name);
    
            //Return Partial View
            return PartialView("_Select", ls);
        }
    

    [_Select 부분보기]

    @model Dictionary<int, string>
    <select>
    <option value="-1">--select--</option>
    @foreach(var val in Model)
    {
        <option value="@val.Key.ToString()">@val.Value</option>
    }
    

    [있는 jqGrid로 페이지]

    { name: 'SchoolId', index: 'SchoolId', align: 'left', editable: true, edittype: 'select', editoptions: { dataUrl: '@Url.Action("SchoolList")' }, editrules: { required: true} },
    

    이 인터넷 검색의 사람이 시간을 절약 희망!


  3. 3.따옴표 문제는 내가 믿는 이런 식으로 고정되어

    따옴표 문제는 내가 믿는 이런 식으로 고정되어

    $.ajax({ type:"POST",
             url: '<%= Url.Action("GetDestinations", "Logger") %>',
             dataType: "json",
             async: false,
             success: function(data) {
               destinations = data.value;
             }
          });
    

    이 값은 큰 따옴표없이 문자열로 평가합니다이 경우에 데이터는 JSON으로 변환되어, 작동합니다.

    그 다음 작동하지 않으면 것은 다음과 같이 할 수있는 return 문을 변경 :

    return "{ value : """+sb.ToString()+""" }";
    

    야호 Linq에 (이 후행하지 것이다. 내가 문제라고 생각합니다)

      (From q In query.AsEnumerable
       select "ID: "+q.Destination).join(";");
    

    (I 테스트하지 않았다 오타가있을 수 있습니다)

  4. from https://stackoverflow.com/questions/4101116/asp-net-mvc-post-call-returning-string-need-help-with-format-for-jqgrid by cc-by-sa and MIT license