2011-01-24 6 views
2

사용자가 버튼을 사용하여 점수를 올리는 사이트를 만들고 있습니다.jQuery.AJAX post() - 몇 가지 질문 및 문제

버튼을 클릭 할 때 페이지를 새로 고치지 않으려면 AJAX를 사용하여 서버에 데이터를 보내고 싶습니다. 여기에 지금까지이 작업은 다음과 같습니다

<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.3.min.js"></script> 
<script type="text/javascript"> 
$(document).ready(function(){ 
     $("#update").click(function() { 
      $.ajax({ 
      type: "POST", 
      url: "update.php", 
      data: "increase", 
      dataType: "Boolean", 
      success: function(update) {} 
       }); 
        }); 
        }); 
</script> 
<button id="update" type="button">Button</button> 
<div id="counter"></div> 

이 훨씬 전혀 나도 몰라,하지만 나는이 물건에 아주 새로운 해요. 내가 가지고있는 주된 문제는 당신이 사용해야하는 구문입니다. 요청이 성공하면 서버가 부울 변수를 반환하기를 원합니다. 따라서 '데이터 유형'의 부울을 역으로 된 쉼표, 아포스트로피 또는 무엇으로 지정할 수 있습니까?

또한 아약스 스크립트가 성공했는지 여부를 파악하는 데 어려움을 겪고 있습니다. 'update.php'스크립트에 'TRUE'또는 'FALSE'값을 반환하는 내용이 있습니까?

마지막으로, php 파일로 보내질 데이터는 PHP가 mysql 테이블을 새로운 점수로 업데이트하도록 지시합니다. 어떻게하면 아약스가 보내는 데이터를 받으면 PHP가 mysql을 업데이트하도록 할 수 있을까요?

감사이의 라인을 따라

+1

이 시간 제한 이벤트입니까? 그러나 여러 번처럼 그들은 특정 기간에 버튼을 누를 수 있습니까? 그렇다면 100 개의 아약스 호출을 보내는 대신 클라이언트 측을 추적 한 다음 타이머가 작동 중일 때 서버에 하나의 업데이트를 보내야합니다. – dqhendricks

+0

답장을 보내 주셔서 감사합니다. 기본 시스템을 먼저 설정 한 다음 타이머와 같은 것을 추가하기 위해 조정 해 드리겠습니다. – Taimur

+0

괄호와 괄호가 맞지 않습니다. 괄호 ... – thetaiko

답변

1

뭔가 일을해야 많은 : PHP는 말에

$.ajax({ 
     type: "POST", 
     url: "update.php", 
     data: {"action":"increase"}, 
     success: function(response) { 
      if(response.error) { 
       alert(response.error); 
       return; 
      } 
      if(response === 'true') { 
       //do something 
      } else { 
       //do something else 
      } 
     } 
     )}; 

, 당신의 코드는 아마 다음과 같을 것이다 :

<?php 
    if(!isset($_POST['action'])) { 
     echo '{"error": "You must provide a action"}'; 
     exit; 
    } 

    $action = $_POST['action']; 
    if(!in_array($action, array('increase', 'decrease')) die('{"error":"invalid parameters"}'); 

    $action = ($action == 'increase') ? ' + 1' : ' - 1'; 

    //$db is assumed to be a live mysqli object from here on out... 

    $result = $db->query("UPDATE someTable SET fieldname = fieldname {$action} LIMIT 1;"); 
    echo ($result->affected_rows > 0) ? 'true' : 'false'; 
?> 
+0

답장을 보내 주셔서 감사합니다, 나는 좀 새로운 것을 좀 더 간단하게 설명해 주시겠습니까 : – Taimur

+0

그것은 진실 가치가 무엇입니까? 데이터 유형이 부울이면 반환되는 문자열은 TRUE이고 반환 된 데이터가없는 경우 FALSE입니까? – Taimur

+0

@ Taimur 업데이트 됨 –

1

dataType 속성을 json, xml, html, jsonp, text 또는 script 중 하나입니다. 부울은 예상되는 유형 중 하나가 아닙니다. 이 경우 예상되는 유형에주의하지 않으려 고합니다. jQuery는 서버가 반환 한 MIME 유형을 기반으로 아무 것도 전달하지 않으면 형식에 대해 지능적으로 추측합니다.

당신이하고 싶은 것은 성공 콜백에 의해 호출 될 함수를 만드는 것입니다.

$.ajax({ 
    type: "POST", 
    url: "http://www.server/path/to/update.php", 
    data: "increase", 
    success: function(data, status, xhr) { 
     functionToProcess(new Boolean(data)); 
    } 
    )}; 

(이 경우, 익명 함수)의 성공에 대한 인수로 주어진 함수는 Ajax 호출이 200 값이 완료되면 호출된다. Ajax는 비동기 적이기 때문에 (A가 무엇인가), 반환하면 좋지 않을 것이다. 당신이 원하는 것은 당신의 부울 값을 처리 할 다른 함수를 호출하는 것입니다. 이것은 내 샘플 코드에서 functionToProcess이라고 불렀습니다. 자세한 내용은 .ajax()에서 jQuery 문서를 확인하십시오.

Javascript에서 참 값과 거짓 부울 값인 here을 생성하는 String 값을 알 수 있습니다. 나는 당신의 점을 이해하는 경우에 반환이 당신이 지금까지, 어떤 방향

how the ajax script knows whether it's successful 

에서 구문 분석 할 수 있기 때문에

1

이 구문은,

$(document).ready(function(){ 
    $("#update").click(function(){ 
      $.ajax({type: "POST", 
        url: "update.php", 
        data: "increase", 
        success: function(update) { 
          if(update) 
           $("#anyelement").html("Thanks"); 
          else 
           $("#anyelement").html("Try again !"); 
       } 
      }); 
     }); 
}); 

당신은 데이터 유형을 무시할 수 있습니다 작동합니다 Ajax 함수는 프로세스가 성공했다면, 당신이 리턴을 파싱하고 로직을 구현할 때까지 기다려야한다.당신이 이런 식으로 PHP로에서

:

if(you logic is correct){ 
    //update you database and ... other login goes here 
    return true; 
}else{ 
    return false; 
} 
+0

감사합니다 그래서 PHP는 "return true"라고 말하면서 아약스는 이해할 수 있습니까? – Taimur

+0

업데이트 된 답변보기! 결과를 얻고 결과를 사용자에게 보여주기 위해 !! – tkt986