문제

jQuery 용 Jeditable 플러그인을 사용했으며 플러그인에 오류를 반환하여 이전 값으로 되돌리고 사용자에게 오류를 표시하도록 지시하고 싶습니다. 동기식 Ajax 호출을 사용 하여이 작업을 수행하고 있지만 대신 비동기 콜백을 사용하는 것이 좋습니다. 내가 멀리해야 할 코드는 다음과 같습니다.

$("#editbox").editable(submitEdit, { 
     indicator : "Saving...",
     tooltip   : "Click to edit...",
     name : "Editable.EmailAddress",
     id   : "elementid",
     type : "text",
     submit  : "<span class=\"mini_button\">Ok</span>",
     cssclass : "edit_text"
});
function submitEdit(value, settings)
{ 
     var edits = new Object();
     var origvalue = this.revert;
     var textbox = this;
     edits[settings.name] = [value];
     var returned = $.ajax({
                        url: "http://someurl.com/edit/", 
                        type: "POST",
                        /*async: false,*/
                        data : edits,
                        dataType : "json",
                        complete : function (XMLHttpRequest, textStatus) 
                                   {
                                       alert("Setting back to original value " +origvalue);
                                       $(textbox).html(origvalue);
                                   }
                     });

      /*var response = $.secureEvalJSON(returned.responseText);
      if (response.errorMsg != '')
      {    
          $("#ajaxNotify").addClass("ajax_error").html(response.errorMsg); 
          return(this.revert);                     
      }*/
      return(value);
 }

또한 잘 작동하는 의견에 동기 구현을 포함 시켰습니다. 높은 서버로드 시나리오에서는 편집이 백엔드에서 완료 될 때까지 브라우저를 잠글 수 있습니다. 차라리 Id는 값을 반환하고 편집이 실패하면 나중에 다시 되돌아갑니다.

감사,

편집하다

Jitters 제안을 시도하고 IE8에서 작동하는 후, 버튼을 클릭하면 FF와 Chrome에 문제가 있다는 것을 깨달았습니다. . 필드를 클릭하면 편집 한 다음 Enter Enter를 누르면 모든 것이 정상입니다. 콜백이 발사되고 값이 재설정됩니다.

필드를 클릭하고 편집 한 다음 확인 버튼을 클릭 한 다음 수신 및 유효성 검사 오류가 발생하지 않으면 양식이 활성화되어 거기에 앉습니다. 오류가 수신되면 부분이 실행되면 텍스트 값이 원본으로 되돌아 가면 필드를 다시 클릭 할 수 없습니다. Jeditable이 바운드되지 않은 것 같습니다.

Firebug에서 게시물과 응답이 접수되어 Ajax가 발사되고 있음을 확인할 수 있습니다.

{ "errormsg": ""}

Enter를 누르지 만 확인 버튼을 클릭하면 Enter를 누르지 않으면 모든 브라우저 에서이 작업이 완벽하게 작동하는 이유는 무엇입니까? 동일한 코드가 어느 쪽이든 실행되고 버튼이 확실히 양식을 올바르게 제출합니다.

결합되지 않은 일은 버튼 누름으로 만 발생합니다.

누구든지 Jeditable 및 처리 서버 측 유효성 검사 문제를 사용하는 예가 있습니까?

도움이 되었습니까?

해결책

간단히 작동하지 않습니까?

...
complete : function (xhr, textStatus) {
  $.secureEvalJSON(xhr.responseText);
  if (response.errorMsg != '') {
    $("#ajaxNotify").addClass("ajax_error").html(response.errorMsg);
    alert("Setting back to original value " +origvalue);
    $(textbox).html(origvalue);
  }
}
...

다른 팁

다른 방법이 있습니다. Jeditable Onerror 기능을 고려할 수 있습니다.

...
onerror: function(settings, original, xhr) {
  $.secureEvalJSON(xhr.responseText);
  if (response.errorMsg != '') {
    var origvalue = ...;
    $("#ajaxNotify").addClass("ajax_error").html(response.errorMsg);
    console.log("Setting back to original value " + origvalue);
    $(original).html(origvalue);
  }
}
...
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top