从旧方式ajax拆分返回数据

时间:2012-11-21 15:27:50

标签: php ajax

我有以旧方式添加新记录的页面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>  

1 个答案:

答案 0 :(得分: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请求。你仍然在PHP中使用json_encode()。唯一的区别是当数据返回时你需要像这样解析它:

JSON.parse(json);

有关最后一位结帐的详细信息:Parse JSON in JavaScript?