2012-03-05 3 views
0

내 목표는 로그인하지 않은 사용자가 책갈피 버튼이있는 페이지를 볼 수있게하는 것입니다. 로그인하지 않은 사용자가 북마크 버튼을 클릭하면 모달에 로그인 양식을 제출하고 자격 증명을 제출하고 북마크를 추가해야합니다 (Yelp와 동일한 방식으로).jQuery 게시 양식 및 콜백

내 문제는 로그인 양식이 북마크 생성 요청을 게시하도록 할 수 없다는 것입니다.

여기 내 jQuery 코드입니다.

$("form#login-form").submit(function(event) { 
     event.preventDefault(); 

     $.post('/account/authenticate_xhr', $(this).serialize(), function(data, textStatus, jqXHR) { 
console.log("posted authenticate"); 

      if (data['user_id']) { 
       // log in successful 
console.log("logged in!"+data['user_id']); 
       if (data['next_action']) { 
        // prepare and post next action 
console.log('next action!'); 
        var next_action = data['next_action']; 
        var controller = next_action['controller']; 
        var action = next_action['action']; 
        var data = next_action['data']; 

        $j.post('/' + controller + '/' + action, { data: data }, function(data, textStatus, jqXHR) { 
        }, "script"); 
       } 
      }; 
     }, "script"); 

console.log('ending'); 

    }); 

실행할 때 콘솔에 "결말"만 표시됩니다. 요청이 authenticate_xhr 게시 요청 내에서 백 엔드에서 제대로 실행되는 동안 코드를 실행할 수 없습니다. 하지만 authenticate_xhr 응답은 저에게 올바른 JSON 객체를 보여줍니다 ...

무엇이 여기에 있습니까?

업데이트 :

  1. 나는 charlietfl 제안을 따라 '/ 계정/authenticate_xhr'을 호출하고 지금은 잘 작동 첫 번째 게시물을 얻기 위해 'JSON'과 '스크립트'를 대체했다. 지금
+1

요청이 있는지 확인하기 위해 방화 광구 또는 크롬 개발 도구를 확인 했습니까? 'if (data [ 'user_id'])'eval을 true로 설정합니까? – gideon

답변

1

당신은 dataTypescript로 ... 요구 사항을 설정 ... 내 js.erb 응답을 실행하기 위해 js.erb보기

  • 유지 번째 POST 요청을위한 '스크립트'를 추가 escape_javascript 필요 는 json입니다. 함수를 래핑 한 jsonp에 대한 요청 인 경우에도 여전히 요청합니다. json

  • +0

    OK ... 이제 json이 아닌 html이 반환됩니다. html 인 경우 dataType을 제거하십시오. html 내부의 스크립트 인 경우 jQuery는 기본적으로 html 유형 – charlietfl

    +0

    이됩니다. 여전히 html입니다. 당신이 이전에 보여 주었던 것은 – charlietfl

    +0

    데이터 형식이없는 데이터 타입 – charlietfl