0

我有通过旧方式 ajax 添加新记录的页面,此代码是添加新记录并返回错误或完成结果消息,我如何在 div 上打印消息并在其他 div 上打印结果。我尝试但有人告诉我使用 JOSN,我该怎么做

<script language="JavaScript">
$(document).ready(function() {
});
$("#closeerr").live('click', function() {
    $("#gadget").hide();
});

       var HttPRequest = false;

       function doCallAjax(Mode,Page,ID) {
          HttPRequest = false;
          if (window.XMLHttpRequest) { // Mozilla, Safari,...
             HttPRequest = new XMLHttpRequest();
             if (HttPRequest.overrideMimeType) {
                HttPRequest.overrideMimeType('text/html');
             }
          } else if (window.ActiveXObject) { // IE
             try {
                HttPRequest = new ActiveXObject("Msxml2.XMLHTTP");
             } catch (e) {
                try {
                   HttPRequest = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
             }
          } 

          if (!HttPRequest) {
             alert('Cannot create XMLHTTP instance');
             return false;
          }

          var url = 'AjaxItemsGroupsRecord.php';
          var pmeters = "titems_groups_GroupName=" + encodeURI( document.getElementById("items_groups_GroupName").value) +
                        "&titems_groups_sys_type_ID=" + encodeURI( document.getElementById("items_groups_sys_type_ID").value ) +
                        '&myPage='+Page +
                        "&tID=" + ID +
                        "&tMode=" + Mode;

            HttPRequest.open('POST',url,true);

            HttPRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
            HttPRequest.setRequestHeader("Content-length", pmeters.length);
            HttPRequest.setRequestHeader("Connection", "close");
            HttPRequest.send(pmeters);


            HttPRequest.onreadystatechange = function()
            {

                 if(HttPRequest.readyState == 3)  // Loading Request
                  {
                   document.getElementById("mySpan").innerHTML = "looding";
                  }

                 if(HttPRequest.readyState == 4) // Return Request
                  {
                   document.getElementById("mySpan").innerHTML = HttPRequest.responseText;
                  }

            }

       }
    </script>  
4

1 回答 1

0

如果 jQuery 是一个选项...正如我的评论中提到的,我建议您尝试 jQuery http://jquery.com/,因为您看起来对 JavaScript 相当陌生。它使 AJAX 请求更简单,您不必担心XMLHttpRequest跨浏览器工作。

要进行实际的 AJAX 请求,请参阅:http ://api.jquery.com/jQuery.ajax/

现在,如果您想使用 JSON,您需要将数据转换为在您的 PHP 脚本中返回。这真的很简单,你只需传入数据json_encode(),它就会将数据转换为 JSON 字符串。然后,您只需将其回显,以便将其返回到 AJAX 请求。

echo json_encode($data);

现在,如果您已将 AJAX 请求设置为期待 JSON 响应,那么您可以使用返回的数据。所以是这样的:

$.ajax({
    url: 'request.php',    // the php you want to call
    dataType: 'json'       // the type of data being returned
}).done(function(json) {
    // you now have a json object
});

如果您只能使用本机 JavaScript... 如果您不能使用 jQuery,那么它的工作方式大致相同。您的示例中将包含 AJAX 请求的代码。你仍然会json_encode()在 PHP 中使用。唯一的区别是当数据返回时,您需要像这样解析它:

JSON.parse(json);

有关最后一点结帐的更多信息:Parse JSON in JavaScript?

于 2012-11-21T20:34:45.080 回答