重新加载页面部分时的AJAX请求

时间:2015-03-23 18:01:03

标签: javascript php jquery html ajax

我是新注册的,但多年来一直是一个安静的读者。 对于这一点,我通过搜索stackoverflow找到了我所有问题的答案:D 但现在我不得不问......

所以我是AJAX的新手,我正在构建一个AJAX请求的测试ap。 我按照本页的例子进行了操作。 http://www.w3schools.com/php/php_ajax_database.asp

关于我的测试ap的信息: 这一切都与编写一个wizzard有关。 这段代码来自我的“wizzard.php”。

index.php正在通过JQUERY加载“wizzard.php” 内容div有一些id。 所以Framework等的所有包含都在index.php中。 至今... wizzard可以工作,并在浏览器中显示相关内容。

现在问题: 向导本身有一个“下一步”按钮。如果你点击它,你会看到 来自wizzard的另一个“页面”(Step)。 HTML看起来像这样:

<div id="wiz1step3">

  <h4 class="widgettitle">Step 3: Overview</h4>
  <div class="par terms" style="padding: 0 20px;">
    <p>Hier werden zusammenfassend.</p>
    <p>Alle Informationen gesammelt die das Hinzufügen betreffen</p>
    <div id="DeviceTypeIdHint"><b>DeviceTypeID will be listed here...</b>
    </div>

    <p>
      <input type="checkbox" />I agree with the terms and agreement...</p>
  </div>

所以我在例子中有一个“Div Hint”。 这是显示AJAX请求代码的地方。

在wizzard的第1页上,我有一个Dropbox,它显示数据库中的一些项目。 我将通过AJAX将项目的名称继续到数据库,我的目标是在第3页的wizzard中显示item-database-id。 (页面由JQUERY控制)

所以我在wizzard.php上有一个JQuery Funktion,我应该这样做 AJAX-Voodoo Stuff。

看起来像这样:

jQuery('.buttonNext').click(function(e) {
      //Hier kommt der AJAX Aufruf für das Besorgen der ID des        ausgewähltenDevices

      e.preventDefault();
      var deviceTypeModel = jQuery('#selection option:selected').text();

      if (deviceTypeModel == "") {
        document.getElementById("DeviceTypeIdHint").innerHTML = "Es wurde keine    ID Zugeordnet";
      } else {
        if (window.XMLHttpRequest) {
          //code for IE7+, Firefix, Chrome, Opera, Safari                 
          xmlhttp = new XMLHttpRequest();
        } else {
          // code for IE6, IE5
          xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }

        xmlhttp.onreadystatechange = function() {
          alert(xmlhttp.readyState)
          if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            document.getElementById("DeviceTypeIdHint").innerHTML = xmlhttp.responseText;
          }
        }

        xmlhttp.open("GET", "getDeviceTypeIdFromDeviceTypeModel.php?q=" + deviceTypeModel, true);
        xmlhttp.send;
      }

与index.php和wizzard.php一样 是“GetDeviceTypeIdFromDeviceTypeModel.php”。位于。 这是应该执行AJAX-Voodoo技巧的文件。

看起来像这样:

<?php

/* 
 * nimmt AJAX Anfragen entgegen und führt sie aus
 */
include_once '\includes\DataAccess.php';

$DataAccess = new DataAccess();
$DeviceTypeNameFromRequest = $_GET['q'];
$AJAX_DeviceTypeId = $DataAccess ->GetDeviceTypeIdForDeviceTypeModel($DeviceTypeNameFromRequest);
echo $AJAX_DeviceTypeId;

我已经调试了JQUERY的东西,直到Point

if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
  document.getElementById("DeviceTypeIdHint").innerHTML = xmlhttp.responseText;
}

问题是readyState始终为1。 我的xmlhttp.responseText始终为空。

我无法弄清楚为什么这个请求不起作用。 Div-Hint没有变化...... 我会感谢每一个答案。

PS。对不起这种可怕的格式化 这是我的第一篇文章...这个语法修正让我烦恼,我正在努力解决“代码剪切工具”XD

1 个答案:

答案 0 :(得分:1)

问题在于您使用的是xmlhttp.send而不是xmlhttp.send()