2010-02-11 53 views
-1

我使用AJAX在MySQL数据库中存储数据,它正在工作。但是我面临一个问题来使用AJAX检索数据。我如何从php中使用ajax获取数据?

我的用于存储数据(它的一个帖子评论页)编码:

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 2010-02-11 15:38:10

+0

任何代码将不胜感激。 – Tim 2010-02-11 15:38:15

+0

请尝试在“相关”下查看相关问题的右侧。 – 2010-02-11 15:38:55

回答

2
  1. 你的AJAX会询问一些GET或POST参数的PHP页面(这些参数可以是这样的搜索过滤器或任何其他人对你的项目非常感兴趣)。你并不总是需要参数,但在大多数项目中通常需要一些参数。
  2. 此PHP页面将根据这些参数查询MySQL数据库。
  3. 最后这个PHP页面将在如XML,JSON可解析的格式输出数据...或者你也可以输出HTML direcly但它的移植性较差。
  4. 然后JavaScript解释AJAX响应(PHP根据从MySQL接收到的数据输出的数据)。

你可以在这里看到Tizag或只是Google it教程...

+0

在我的答案中添加了一些教程。 – AlexV 2010-02-11 15:48:03

0

阿贾克斯仅仅意味着“使HTTP请求,而无需离开当前页面”。它只关心网络服务器和浏览器之间的通信。你仍然会得到一个正常的HTTP请求(在这种情况下,这可能导致PHP程序运行)。

连接到数据库,并使用PHP从中获取数据的问题是一个Ajax请求任何其他要求是相同的。

唯一的区别是,你可能会想比一个完整的HTML文档等输出的东西。

相关问题