Ajax POST方式发送请求服务器接收不到数据问题解决办法

直接看源码

 代码如下 复制代码

<script language="javascript">
   function setViewPoint() {
    var msg =""; //用于接收返回数据
    //实例化Ajax
    var leeAjax = leeInitAjax();
    var webRoot = window.location;
    webRoot = webRoot.toString();
    var domain = webRoot.substring(7);
    var endD = domain.indexOf("/");
    domain = domain.substring(0,endD);
    //接收表单的URL地址
    var url = "http://"+domain+"/plus/leeGetViewForWay.php";
    //通过Post方式打开连接
    leeAjax.open("POST", url, true);
    //定义传输的文件HTTP头信息
    leeAjax.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=gbk");
    //需要POST的值,把每个变量都通过&来联接
    //发送POST数据
    var postStr = "viewId='asdf'&id='asdfa'"
    leeAjax.send(postStr);//获取执行状态  
    leeAjax.onreadystatechange = function() {
     //如果执行状态成功,那么就把返回信息写到指定的层里
     if (leeAjax.readyState == 4 && leeAjax.status == 200) {
      msg = leeAjax.responseText;//获取的返回值
      alert(msg);
     }
    }
   } 
   function leeInitAjax() {
    var leeAjax=false;
    try{
     if( window.ActiveXObject ){
      for( var i = 5; i; i-- ){
       try{
        if( i == 2 ){
         leeAjax = new ActiveXObject( "Microsoft.XMLHTTP" );
        } else {
         leeAjax = new ActiveXObject( "Msxml2.XMLHTTP." + i + ".0" );
        }     
        break;
       } catch(e) {
        leeAjax = false;
       }
      }
     } else if( window.XMLHttpRequest ) {
      leeAjax = new XMLHttpRequest();
      if (leeAjax.overrideMimeType) {
       leeAjax.overrideMimeType('text/xml');
      }
     }
    } catch(e) {
     leeAjax = false;
    } 
    return leeAjax;
   }
  </script>

php 代码如下:

 代码如下 复制代码

<?php
$a = $_REQUEST ["viewId"].")___(".$_REQUEST["id"];
if($_POST ["viewId"]=="") $a .= "<br/>___";
echo $a;
?>

于是在构建发送数据时由字符串改成了JS对象,可是还是不行。只好查资料了。原来是要设置一下发送数据的编码类型的。代码如下:

 代码如下 复制代码
var Myquery = Myinput();
 
xmlhttp.open("POST","post.php",true);
 
xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); 
 
xmlhttp.onreadystatechange = byphp;

 
xmlhttp.send(Myquery);application/x-www-form-urlencoded编码类型是表单发送数据的默认编码类型,想不到在AJAX请求中要明确注明,这样添加了第三行的代码注明格式后果然就正确了,问题解决。如果通过JQUERY发送POST方式的AJAX请求就方便多了,不用添加这一行。再一次感受到了JQUERY的强大和便捷。

想用POST发送Ajax异步请求,就要把你的数据统一放在send()方法中发送,而不能是send(null)。

 代码如下 复制代码
 Xml.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

这一句在GET方式中不要写,但是在POST方式中是必须的,由于你在POST方式中用了send(null),导致没有发送任何数据到index1.php,所以看不到这一句的效果。

 代码如下 复制代码

 get('index1.php?c=1',a)"

get('index1.php?c=2',a)"

两个按钮发送的数据只有c这个参数不同,所以可以把index1.php和a都写在你这个get方法的内部,修改以后的get方法是这样的

 代码如下 复制代码
function get(num)
{
data="index1.php?";
if(Xml){
 var obj=document.getElementById("a");
 Xml.open("POST",data);
 Xml.onreadystatechange=function()
 {
  if(Xml.readyState==4&&Xml.status==200){
   obj.innerHTML=Xml.responseText;
  }
 }
 Xml.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
 var queryString="c="+num;
 Xml.send(queryString);
 }
}

当然

 代码如下 复制代码

get('index1.php?c=1',a)"

get('index1.php?c=2',a)"

也要相应的改成

get(1);

get(2);

这样就可以成功地用POST方法向服务器异步请求数据了

时间: 2024-10-14 18:35:54

Ajax POST方式发送请求服务器接收不到数据问题解决办法的相关文章

ajax-AJAX发送请求,后台接受到数据但是返回结果后,Ajax请求结果失败

问题描述 AJAX发送请求,后台接受到数据但是返回结果后,Ajax请求结果失败 前台JS和后台相应如下: var username = $("#user_name").val().trim(); var password = $("#password").val(); console.log(username+","+password); $.ajax({ url:"/Test1224/login.action", data:

Android HTTP发送请求和接收响应的实例代码_Android

添加权限 首先要在manifest中加上访问网络的权限: 复制代码 代码如下: <manifest ... > <uses-permission android:name="android.permission.INTERNET" /> ... </manifest> 完整的Manifest文件如下: 复制代码 代码如下: <?xml version="1.0" encoding="utf-8"?>

Android HTTP发送请求和接收响应的实例代码

添加权限 首先要在manifest中加上访问网络的权限: 复制代码 代码如下: <manifest ... > <uses-permission android:name="android.permission.INTERNET" /> ... </manifest> 完整的Manifest文件如下: 复制代码 代码如下: <?xml version="1.0" encoding="utf-8"?>

wordpress无法接收评论邮件提醒问题解决办法

WordPress博客程序是目前互联网上使用最多的独立博客程序.深受广大博主和wordpress爱好者喜爱.自身也用了两年多时间了,相信很多朋友在使用wordpress中和我当初一样也碰到了很多问题,接下来的一系列原创经验,将为大家解决在使用wordpress中经常碰到的问题. 我们知道,独立博客必须拥有自己的域名和主机,我们的wordpress博客程序是放在服务商的主机上的,wordpress博客程序是用PHP程序开发的,但是有些主机是不支持php的mail()函数,这样当读者在我们的博客上留

Tomcat服务器图片地址中文路径问题解决办法_Tomcat

Tomcat服务器中文路径的问题 复制代码 代码如下:  < IMG SRC="中文图片.jpg" WIDTH="77" HEIGHT="80" BORDER=0 ALT="" > 或 < a href="中文.jsp">中文文件名< / a> 或 http://127.0.0.1:8080/中文.[扩展名] 通常在以上三种情况下,Tomcat5服务器会报告找不到文件的错

WIN2003服务器 IIS经常停止响应问题解决办法参考_win服务器

下面是出问题的一些人的服务器的现象 1.服务器 window2000 adv server cpu 4G 内存2G 我公司负责维护的asp程序经常停止响应,具体现象是服务器有一个dllhost进程占用内存较大杀掉该进程后恢复正常.以前也出现过类似现象,当时根据日志查找报错的页面并修改后该问题解决. 现在又出来了,而iis日志里报错的信息也很少.你们有没有比较好的查找原因的方法. 2.我们单位一台web服务器,用win2000+iis+asp+sql server 7,到现在共运行了一个月左右.其

java发送HttpClient请求及接收请求结果过程的简单实例_java

一. 1.写一个HttpRequestUtils工具类,包括post请求和get请求 package com.brainlong.framework.util.httpclient; import net.sf.json.JSONObject; import org.apache.commons.httpclient.HttpStatus; import org.apache.http.HttpResponse; import org.apache.http.client.methods.Htt

jquery的ajax异步请求接收返回json数据实例_jquery

jquery的ajax异步请求接收返回json数据方法设置简单,一个是服务器处理程序是返回json数据,另一种就是ajax发送设置的datatype设置为jsonp格式数据或json格式都可以. 代码示例如下: 复制代码 代码如下: $('#send').click(function () {     $.ajax({         type : "GET",         url : "a.php",         dataType : "json

jquery ajax异步请求 接收返回json数据

例子  代码如下 复制代码 $('#send').click(function () {     $.ajax({         type : "GET",         url : "a.php",         dataType : "jsonp",         success : function (data) {             $.each(data.items, function (i, item) {