2013-04-24 2 views
8

모든 앵커에 대해 Ajax 요청을하는 함수가 있습니다. 요청 메소드는 GET 또는 POST 일 수 있습니다. 이 경우 폼을 사용하지 않고 POST를 만들고 싶지만 Ajax 요청은 요청을 보내기 전에 오류를 throw합니다. 오류 값은 "error"이며 모든 오류/실패 설명 변수는 ""입니다.JQuery Ajax 요청을하지 않고 빈 오류가 발생하는 POST

function loadPage(url,elem_id,method,data) { 
    ajaxLoading(elem_id); 
    $.ajax({ 
     type: method, 
     url: url, 
     data: data, 
     success:function(data){ 
      $("#"+elem_id).html(data);; 
     }, 
     error:function(request,textStatus,error){ 
      alert(error); 
     } 
    }); 
} 

함수가 호출되는 PARAMS합니다 (JS 콘솔에서 복사)이 있습니다

요청으로
data: "partial=yes" 
elem_id: "page" 
method: "post" 
url: "/projects/2/follow" 

, 여기에 loadPage 함수를 호출하는 코드입니다.

$("body").on("click","a.ajax",function(event) { 
    var _elem = getDataElem($(this)); 
    var _method = getRequestMethod($(this)); 
    var _partial = getRequestPartial($(this)); 
    handlers.do_request(event,$(this).attr("href"),_elem, _method, _partial); 
}); 

var handlers = (function() { 
    var obj = {}; 
    obj.do_request = function(event,url,elem_id,method,data) { 
     event.preventDefault(); 

     loadPage(url,elem_id,method,data); 
     history.pushState({selector:elem_id,method:method,data:data},null,url); 
    }; 
}()); 

Ajax 요청이 실패하면 요청이 기본적으로 이루어지고 응답이 성공합니다. 내가 읽었을 때, 이것은 POST 요청 (폼이 필요 없음)을 만드는 유효한 방법 인 것 같다.

기능에 문제가 있습니까? 오류 정보가 비어있는 이유는 무엇입니까?

감사

편집 :

내가 변수 "데이터"가 직렬화 기능으로 만든 작품을 기능에 "형태"에서 POST에 대해 생각하고있다 (예 : "VAR 데이터 = $ (this) .serialize(); "). 내가 "양식"없이 POST를 할 때 "데이터"의 형식이 어쩌면 틀린가? 아마도 JQuery Ajax 함수는 POST가 수행 될 때 데이터로 "partial = yes"와 같은 간단한 문자열을 허용하지 않을 수도있다. 이것에 대한 어떤 생각?

+0

요청 및 textstatus 변수가 비어 있습니다. –

+0

'게시'를 대문자로 표시해야합니까? 그것은 문서에 있습니다. –

+0

'loadPage'를 어떻게 호출하는지 보여주는 코드를 게시 할 수 있습니까? – 1337holiday

답변

0

문제를 해결할 수 없으며 발생 원인을 찾을 수 없습니다. 비록 'POST'메서드를 사용하여 앵커 대신 숨겨진 빈 폼을 사용하여 주변을 발견했습니다. 양식의 경우 함수가 제대로 작동했습니다. 답변

-1

그냥 같지만, docs에는 type 매개 변수가 모두 대문자로되어 있습니다 (예 : 'POST'). 'post'이 아닙니다.

+0

should should both both? 나는 그 문제를 생각하지 않는다 – 1337holiday

+0

'POST'와 'post'로 시도했지만 아무런 차이가 없다. – JPHorta

+1

자바 스크립트는 대소 문자를 구분하므로 둘 다 반드시 작동하지 않아야한다. jQuery 소스 (https://github.com/jquery/jquery/blob/master/src/ajax.js#L455)를 확인하고 형식 매개 변수를 대문자로 변환하는 것처럼 보입니다. 그래서 그것은 같지 않습니다. 문제. –

0

보십시오 : 당신이 키워드의 이름을 딴 변수를 사용하여 문제에 실행하는 경우

function loadPage(url,elem_id,method,dat) { 
    ajaxLoading(elem_id); 
    $.ajax({ 
     type: method, 
     url: url, 
     data: dat, 
     success:function(data){ 
      $("#"+elem_id).html(data);; 
     }, 
     error:function(request,textStatus,error){ 
      alert(error); 
     } 
    }); 
} 

내가 궁금하네요. 이 방법으로 문제가 해결되지 않으면 인수없이 loadPage를 호출하고 모든 Ajax 매개 변수를 하드 코딩하여 작동하는지 확인하십시오.

+0

지금 시도했지만 성공하지 못했습니다. 요청을 보내지 않고도 오류가 발생했습니다. 답변을 주셔서 감사합니다. – JPHorta

2

에 대한

덕분에 난 그냥이 문제를 경험하고 생각 한 두 시간 후에 false로 캐시를 설정하려고 할 수 있습니다. 그것을 위해 그것을 고정.

$.ajax({ 
    url: url, 
    cache: false, 
    type: method 
}); 

불행히도 캐시를 다시 제거하면 문제가 발생하지 않았던 것처럼 작동합니다. 마치 cache:false 설정을 '클릭'한 것처럼 보입니다.

오 잘.

+0

당신이 검색하려고하는 데이터 (질문이'POST '에 관한 것이지만'GET'이라고 가정)가 동적 인 경우, 서버 응답은 캐싱을 허용해서는 안됩니다. 그러면'cache : false'가 필요하지 않습니다. –