2010-02-11 4 views
-1

AJAX를 사용하여 MySQL 데이터베이스에 데이터를 저장 했으므로 작동 중입니다. 하지만 AJAX를 사용하여 데이터를 검색하는 데 문제가 있습니다.어떻게 PHP에서 아약스를 사용하여 MySQL에서 데이터를 얻을 수 있습니까?

데이터를 (자사의 게시 코멘트 페이지) 저장에 대한 나의 코딩 :

function sendMail(form_id) { 
    // Do a client-side check; if it passes, then move on; 
    // otherwise, report an error to the user 

    //if (!validatePage(form_id)) return; 
    if(!checkMail(document.getElementById('txtEmail').value)) 
    { 
     document.getElementById('txtEmail').focus(); 
     return false; 
    } 
    window.scrollTo(0,0); 
    divId = "results"; 
    var str = ""; 
    var elem = document.getElementById(form_id).elements; 
    for (var i = 0; i < elem.length; i++) { 
     if (
      (elem[i].type == "hidden") || 
      (elem[i].type == "text") || 
      (elem[i].type == "textarea") 
     ) { 
      // Text field 
      str += elem[i].id + "=" + escape(encodeURI(trimField(elem[i].id))) + "&"; 
     } 
     else if (elem[i].type == "checkbox") { 
      // Check box 
      if (elem[i].checked) { 
       str += elem[i].id + "=on&"; 
      } 
      else { 
       str += elem[i].id + "=off&"; 
      } 
     } 
     else if (elem[i].type == "select-one") { 
      // Drop-down menu (SELECT) 
      var sel = elem[i]; 
      str += sel.id + "=" + sel.options[sel.selectedIndex].value + "&"; 
     } 
    } 
    str = str.substring(0, str.length-1); 
    str = str.replace(/%250A/g,"\n") // Make sure that line breaks get transmitted properly 
    if (form_id == "contact_form") { 
     form_page = "sendMail.php"; 
    } 
    AjaxRequest(form_page, str, "post"); 
} 

// Make the AJAX request 
function AjaxRequest(url, parameters, type) { 
    http_request = false; 
    if (window.XMLHttpRequest) { 
     // Mozilla, Safari,... 
     http_request = new XMLHttpRequest(); 
     if (http_request.overrideMimeType) { 
      // set type accordingly to anticipated content type 
      //http_request.overrideMimeType('text/xml'); 
      http_request.overrideMimeType('text/html'); 
     } 
    } 
    else if (window.ActiveXObject) { 
     // IE 
     try { 
      http_request = new ActiveXObject("Msxml2.XMLHTTP"); 
     } 
     catch (e) { 
      try { 
       http_request = new ActiveXObject("Microsoft.XMLHTTP"); 
      } 
      catch (e) { 
      } 
     } 
    } 
    if (!http_request) { 
     alert("Cannot create XMLHTTP instance"); 
     return false; 
    } 
    if (type == "post") { 
     // POST 
     http_request.open('POST', url, true); 
     http_request.onreadystatechange = AjaxRequestCb; 
     http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
     http_request.setRequestHeader("Content-length", parameters.length); 
     http_request.setRequestHeader("Connection", "close"); 
     http_request.send(parameters); 
    } 
    else if (type == "get") { 
     // GET 
     http_request.open('GET', url + parameters, true); 
     http_request.onreadystatechange = AjaxRequestCb; 
     http_request.send(null); 
    } 
    // if...else 
} 

// AJAX Callback 
function AjaxRequestCb() { 
    if (
     http_request.readyState == 1 || 
     http_request.readyState == 2 || 
     http_request.readyState == 3 
    ) { 
    } 
    else if (http_request.readyState == 4) { 
     if (http_request.status == 200) { 
      result = http_request.responseText; 
      document.getElementById(divId).innerHTML = result; 
      // If CAPTCHA failed, then repopulate it 
      if (result.indexOf("CAPTCHA") > -1) { 
       Recaptcha.reload(); 
      } 
      else { 
       // Clear form after email has been sent 
       document.forms["contact_form"].reset(); // Not robust, I know (will modify later) 
       Recaptcha.reload(); // Display a new CAPTCHA 
      } 
     } 
     else { 
      alert("Callback failed. There was a problem with the request."); 
     } 
    } 
} 

// Remove any unneccessary whitespace 
function trimField(field) { 
    re = /(^\s*)([^\b]*\S)(\s*$)/; 
    if (re.test(document.getElementById(field).value)) { 
     document.getElementById(field).value = document.getElementById(field).value.replace (re, "$2"); 
     return document.getElementById(field).value; 
    } 
    else { 
     document.getElementById(field).value = ""; 
     return ""; 
    } 
} 

// The phone field shows how the user should input a phone number; 
// on the first focus, the value will be cleared so the user can 
// enter a phone number 
function clearField(field_id) { 
    if (first_time) { 
     document.getElementById(field_id).value = ""; 
     first_time = false; 
    } 
} 
+0

지금까지 무엇을 얻었습니까? – Yacoby

+0

어떤 코드라도 감사 할 것입니다. – Tim

+0

관련 질문에 대해서는 "관련"에서 오른쪽을보십시오. –

답변

2
  1. 귀하의 AJAX는 이러한 매개 변수는 검색 필터 또는 아무것도 같은 수 (일부 GET 또는 POST 매개 변수를 사용하여 PHP 페이지를 조회됩니다 그렇지 않으면 당신의 프로젝트에 대한 계시). 매개 변수가 항상 필요한 것은 아니지만 일반적으로 대부분의 프로젝트에서 매개 변수가 필요합니다.
  2. 이 PHP 페이지는 다음 매개 변수를 기반으로 MySQL 데이터베이스를 쿼리합니다.
  3. 마지막으로이 PHP 페이지는 XML, JSON과 같은 구문 분석 가능한 형식으로 데이터를 출력합니다 ... 또는 HTML을 직접 출력 할 수도 있지만 이식성이 떨어집니다.
  4. 그러면 JavaScript는 AJAX 응답 (MySQL에서받은 데이터를 기반으로 PHP가 출력 한 데이터)을 해석합니다.
당신은 Tizag하거나 Google it 여기에 튜토리얼을 볼 수 있습니다

... 아약스는 그냥 "현재 페이지를 떠나지 않고 HTTP 요청을 만들기"를 의미

+0

내 대답에 몇 가지 자습서를 추가했습니다. – AlexV

0

. 웹 서버와 브라우저 간의 통신에만 관련됩니다. 여전히 일반적인 HTTP 요청을받습니다 (이 경우 PHP 프로그램이 실행되는 것으로 추정 됨).

PHP를 사용하여 데이터베이스에 연결하고 데이터를 가져 오는 문제는 다른 요청과 마찬가지로 Ajax 요청에 대해 동일합니다.

유일한 차이점은 완전한 HTML 문서가 아닌 다른 것을 출력하고 싶다는 것입니다.

관련 문제