2013-05-26 3 views
0

는 내가이 전에 일을 생각하지만 더 이상하지 않는, 아주 이상한 문제가있어. 나는 아무것도 바꾸는 것을 기억하지 않는다. 이전 jQuery 라이브러리로 시도했다. (익명 함수) : 행 68 http://i.imgur.com/H51wG4G.png : jQuery를 아약스 - 캔트 구문 분석 JSON?

나는라는 오류가 발생했습니다. 이는 68 행을 참조 : VAR jsondata = $ .parseJSON (데이터);

이 내 아약스 기능 내 경고가이 오류로 인해 중 하나가 작동 얻을 수 없다. 이 스크립트는 로그인을위한 것이므로 내 웹 사이트를 새로 고침하면 로그인하게되므로 작업하십시오. 또한 이미지에서 볼 수있는 것처럼 json 객체를 반환합니다. { "성공"거짓 "MSG": "지옥 ANV \ u00e4ndarnamn 엘러 리터의 ​​\의 u00f6senord.", "리디렉션": ""} 나는이 왔을 때 내가 성공을 가지고 있다면, 나는 login.success에서 확인합니다

== true이고 login-in.php에서 로그인 패널을 얻습니다.

$('#login_form').submit(function() 
{ 
    var login = $.ajax(
    { 
     url: '/dev/ajax/trylogin.php', 
     data: $(this).serialize(), 
     type: 'POST', 
    }, 'json'); 
    login.success(function(data) 
    { 
     var jsondata = $.parseJSON(data); 
     console.log(jsondata); 
     if(jsondata.success == true) 
     { 
      $.get("/dev/class/UI/logged-in.php", function(data) { 
       $(".login-form").replaceWith(data); 
      }); 
     } 
     else 
     { 
      alert(jsondata.msg); 
      $('#pwd').val(''); 
     } 
    }); 
    return false; 
}); 

감사합니다.

+0

jQuery Ajax

은'구문 분석하기 전에'data' 사용'을 console.log (데이터)의 내용을 붙여주세요. –

답변

1

response 첨부 스크린 샷에 표시 할 내용이 있다면 JSON 응답을 생성하는 PHP 스크립트에 문제가있는 것입니다. 이 응답 (또는 해당 파일에 포함 된 다른 스크립트)을 생성하는 PHP 스크립트가 SITE_TITLE이라는 상수를 사용하고 있지 않은지 확인하십시오. 해당 PHP 파일 중 해당 상수를 사용해야하는 경우 해당 SITE_TILE이 어딘가에 정의되어 있고 해당 파일에 포함되어 있는지 확인하십시오.

JSON 응답 생성에 관련된 PHP 파일 중 하나가 어떻게 든 변경되었을 수 있으며 먼저 정의하지 않고 SITE_TITLE 비용 사용을 시작했거나 해당 상수가 들어있는 파일을 포함하지 않은 것입니다.

또는, 어쩌면 JSON 세대에 포함 된 파일 중 어느 것도 변경되지 않은, 오히려, 당신의 error_reporting 설정이 변경되었을 수 있으며 일부 정의되지 않은 일정을 볼 때 지금 PHP 통역이 notice 수준의 텍스트를 출력한다. 문제

SITE_TITLE 상수가 정의되어 있지 않으면 해결

그것을 정의한다. SITE_TITLE 상수가 다른 파일에 정의되어있는 경우 해당 파일을 응답을 생성하는 PHP 스크립트에 포함 시키십시오.

error_reporting 설정을 Notice을 무시하도록 설정하고 권장하지 않습니다.

+0

와우. 모두가 너무 도움이되었습니다. 당신은 실제로 옳았습니다. 그것은 상수 문제였습니다. 나는 그것이 "Notice"오류이기 때문에 이것이 그러한 영향을 줄 것임을 알지 못했다. 그러나 나는 왜 지금 이해합니다. 이것을 올바른 답으로 표시하겠습니다. 모두 감사합니다. – mpj

+1

오케이. 기쁜 데 도움이되었습니다. –

1

귀하의 응답은 유효한 JSON 없습니다. 다음과 같이 표시됩니다 : "예기치 않은 토큰 <".

응답에 예상치 못한 "<"이 포함되어 있으며 JSON 형식으로 변환 할 수 없음을 의미합니다.

console.log(data)으로 바꾸고 JSON으로 변환하십시오.

0

당신은 login.success()가 아닌 login.done()을 사용합니다. 성공은 ajax() 함수 안에서만 사용됩니다! 성공 객체 함수는 더 이상 사용되지 않으며 Ajax() 매개 변수로만 성공을 설정할 수 있습니다!

그리고 데이터를 구문 분석 할 필요가 없습니다. Json 형식이기 때문에 이미 데이터를 파싱해야합니다.

$('#login_form').submit(function() 
{ 
    var login = $.ajax(
    { 
     url: '/dev/ajax/trylogin.php', 
     data: $(this).serialize(), 
     type: 'POST', 
    }, 'json'); 
    login.done(function(data) 
    { 
     var jsondata = data; 
     console.log(jsondata); 
     if(jsondata.success == true) 
     { 
      $.get("/dev/class/UI/logged-in.php", function(data) { 
       $(".login-form").replaceWith(data); 
      }); 
     } 
     else 
     { 
      alert(jsondata.msg); 
      $('#pwd').val(''); 
     } 
    }); 
    return false; 
}); 
+0

감사. 성공 대신 로그인을 사용합니다. 이미 Json 형식입니까? 흠은 그것이 사실인지 몰랐다. – mpj