2010-07-02 5 views
0

일부 양식 값을 ajax를 통해 PHP 스크립트에 게시하고 있습니다. PHP는 성공하면 1을, 성공하지 못하면 2를 반환합니다.JQuery Ajax 오류

PHP가 제대로 작동하는 것 같지만 자바 스크립트에서 URL로 리디렉션되고 빈 페이지에 숫자 1이 표시되는 대신 에이잭스 요청에 다시 표시됩니다.

이것은 내 자바 스크립트입니다. 아무도 내가 잘못 가고있는 것을 볼 수 있습니까?

$(".save").click(function() { 
var area = $("input#area").val(); 
var january = $("input#january").val(); 
var target = $("input#target").val(); 
var ach = $("input#achieved").val(); 
var comments = $("input#comments").val(); 
var token = "<?php echo $token; ?>"; 
var dataString = 'area='+ area + '&january=' + january + '&target=' + target + '&achieved=' + ach + '&comments=' + comments + '&ci_token=' + token; 
    $.ajax({ 
    type: "POST", 
    url: "review/update-review/<?php echo $yr; ?>", 
    data: dataString, 
    success: function(msg) { 

     if(msg == 1) 
     { 
      alert("Your review has been updated."); 
     } 
     else 
     { 
      alert("There was a problem updating your review. Please try again."); 
     } 

    } 
    }); 
    return false; }); 

답변

0

나는 데이터 매개 변수의 형식에 문제가 있다고 생각합니다. 대한

유형 : "POST"

데이터

에 대한 다음

: "자 {param1 : 'PARAM1', PARAM2 'PARAM2'}"

당신이 피들러와 같은 도구가 있습니까이 보는 브라우저와 서버 간의 통신 그렇지 않으면 나는 바이올린을 다운로드하는 것이 좋습니다 (무료입니다). 실제적으로 무슨 일이 일어나고 있는지에 대한 많은 통찰력을 제공 할 것이며, 아약스 스타일 포스트에 무엇이 잘못되었을 지에 대한 귀중한 정보를 줄 수 있습니다.

+0

유일한 다른 코멘트는 여기 상황을 해결합니다. – RobertPitt

+0

모두에게 감사드립니다. Firefox 용 Tamper Data 플러그인을 사용하여 실수로 다른 양식 필드 값을 ajax 요청과 함께 전달하고 있음을 확인했습니다. 지금 모두 정렬되어 예상대로 작동하는 것 같습니다. 여러분 모두를 도와 주셔서 감사합니다. – Tom

0

코드는 구문을 포함하여 나에게 꽤 괜찮아 보입니다. 여전히 가능성이있는, 발생 : -

  • 당신이 예에서 사용하는 PHP 코드를 실행하기위한 URL이 ("review/update-review/<?php echo $yr; ?>"가) 잘못 현재 페이지를 참조하여 제공 될 수있다.
  • 여기에서 INPUT 요소의 값을 캡처하는 데 사용하는 변수가 잘못된 처리로 이어질 수있는 JavaScript 특수 문제를 일으키는 특수 문자 (예 : "&")를 생성 할 수 있습니다.

희망이 있습니다.

+0

제안 해 주셔서 감사합니다. 나는 모든 것을 점검하고 모든 것을 점검했다. 모든 데이터가 데이터베이스에 올바르게 게시되고 있습니다. 아약스가 응답을받지 못한다면 모든 것이 작동하는 것처럼 보입니다. URL로 리디렉션됩니다. – Tom

+0

당신이하고 싶은 말을 얻지 못했기 때문에 "나는 URL로 리디렉션되고있다"라는 줄을 자세히 설명해 주실 수 있습니까? 어떤 URL에서 리다이렉트가되는지 & 어떻게 결과가 데이터베이스에 삽입되는지 확인 했습니까? ** 사용자가 입력 한 데이터에 특수 문자 (이 경우 "&")가 포함되어 있으면 JS 변수 "dataString"이 제대로 작동하지 않는 다른 점도 확인하십시오. ** 이러한 점을 확인하십시오. 고마워요 –

0

우선 if(msg == 1)은 이 아니므로 가져 오기가 문자열이므로 b0if(msg == '1')이됩니다. 다음

var dataObject = { 
    area : area, 
    january : january, 
    target : target, 
    achieved : ach, 
    comments : comments, 
    ci_token : token 
} 

dataObject

에 아약스 요청에

  • 디버그를 변경 : 당신이 객체과 같이하는 것을

    var dataString = 'area='+ area + '&january=' + january + '&target=' + target + '&achieved=' + ach + '&comments=' + comments + '&ci_token=' + token; 
    

    변경이

    Firefox : firbug.

  • 크롬을 사용하는 경우 Ctrl+Shift+J을 누르면 자바 스크립트 콘솔이 열리고 디버그됩니다. 모든 heaDers와 전송 데이터를 살펴보고 console.log(varaible)을 사용하여 변수 값을 추적 할 수 있습니다.
+0

다시 전달되는 문자열에 대한 제안 주셔서 감사합니다 - 나는 그것을 변경했습니다. – Tom