ajax post传不过去,Ajax POST方式发送请求服务器接收不到数据问题解决办法_weixin_39963744的博客-程序员宅基地

技术标签: ajax post传不过去  

直接看源码

代码如下

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;

}

php 代码如下:

代码如下

于是在构建发送数据时由字符串改成了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方法向服务器异步请求数据了

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39963744/article/details/119433663

智能推荐

源码 | 基于支持向量机 (SVM) 和稀疏表示理论 (SRC) 的人脸识别比较_西部小狼_的博客-程序员宅基地

这篇是本博客第二篇文章的续文,即关于SVM和SRC做人脸识别我所做的代码实现(Matlab)。虽然说目前绝大部分都是用深度学习来做人脸识别,而且效果一骑绝尘,但是某些特定条件下(比如小样本)传统方法依然是值得大家回顾与学习的。 至于理论部分,请见:https://blog.csdn.net/weixin_43795395/article/details/88729251所用到的Yale数据...

Java集合的hashset和treeset的无序和唯一性_可及丶的博客-程序员宅基地

Set在集合Collection里面,有无序的Set和有序的List,这里讲解的是Set的实现类HashSet与TreeSetHashSet:数据结构是哈希表。线程是非同步的,保证元素唯一性的原理:判断元素的hashcode是否相同,如果相同还会判断元素的equals方法TreeSet:可以对Set集合中的元素进行排序,底层结构是二叉树,保证数据唯一性的依据:CompareTo的retur...

初识 fstab_小心D滑的博客-程序员宅基地

我们在系统中新建了分区后,当然可以用mount命令将该分区挂载到某目录下,但是如何才能让其在我们开机时自动挂载呢?我们可以通过编辑 /etc/fstab 文件来设置。这个配置文件描述了系统中各种文件系统的信息,开机时,系统会读取其内容以进行自动挂载的工作。 现在,我们先来看一下这个文件里的内容:    cat /etc/fstab 下面是我的Ubuntu上显示的信息:#

简单线性回归-最小二乘法推导过程_推导最小二乘法的线性模型参数的求解过程。_风中静行的博客-程序员宅基地

最近学习线性回归,自己推导了一下最小二乘法。 其他参考文章:https://blog.csdn.net/chasdmeng/article/details/38869941?utm_source=blogxgwz0https://blog.csdn.net/iterate7/article/details/78992015要是你在西安,感兴趣一起学习AIOPS,欢迎加入QQ群 ...

win10系统+jdk1.7(环境变量配置)+apache-tomcat-7.0.75(环境变量配置)_yjh825773403的博客-程序员宅基地

想要运行java程序,首先要安装java运行环境,即JRE(Java Runtime Environment)。但作为开发人员,需要安装java的开发环境,即JDK。1.JDK(Java Development kit):Java运行和开发环境 ,面向开发人员。2.JRE(Java Runtime Environment):java运行环境,面向用户。笔者电脑win10系统,起初安装jdk1.8

光耦p621引脚图_开关电源中光耦电路的设计与优点_weixin_39571179的博客-程序员宅基地

光耦(opticalcoupler)亦称光电隔离器、光耦合器或光电耦合器。它是以光为媒介来传输电信号的器件,通常把发光器(红外线发光二极管LED)与受光器(光敏半导体管)封装在同一管壳内。当输入端加电信号时发光二极管发出光线,光敏三极管接受光线之后就产生光电流,从输出端流出,从而实现了“电—光—电”转换。典型应用电路如下图1-1所示。光耦的主要优点是:信号单向传输,输入端与输出端完全实现了前端与负...

随便推点

wcout 中文输出问题_onecing的博客-程序员宅基地

转载自:https://www.xuebuyuan.com/1730068.html【不设置全局本地化环境时】  在VS2005下用C/C++写程序,如果程序没有调用setlocale函数设置本地化环境,则cout,printf都能正常的输出中文。然而,所有涉及宽字节串和多字节串的中文相互转换的功能都将以失败告终,比如:调用wcstombs函数或mbstowcs,或者使用了间接...

docker 容器无法连接外网_weixin_33733810的博客-程序员宅基地

2019独角兽企业重金招聘Python工程师标准>>> ...

MacBook Pro 触控板目前没有触感反馈怎么办?_macbook触控板没有按压感怎么调_SЁv雙木⑦成林ēЙ的博客-程序员宅基地

MacBook Pro 触控板目前没有触感反馈。请您先前往苹果菜单并选取“系统偏好设置”。然后,选取“触控板”,点按“光标与点按”标签,再次重新勾选“用力点按和触觉反馈”。若问题依然 存在,请您再尝试以下操作:(PS:我是直接重置了SMC问题就解决了)重置系统管理控制器 (SMC)1.将 Mac 关机。2.从电脑上拔下 MagSafe 或 USB-C 电源适配器。3.在内建键盘上,按下键盘左侧的 Shift-Control-Option 键,然后同时按下电源按钮。按住这些按键和电源按钮 10

简单总结Java中String,StringBuffer和StringBuilder的区别_stringbufferfu'kong_loli_kong的博客-程序员宅基地

String类用final关键词修饰(final修饰的类不可被继承,方法不可被重写,变量不可变),所以,String类型的变量值一旦被创建便不可修改。StringBuffer和StringBuilder是可变的。 StringBuffer,默认加了同步锁,所以线程安全,适合多线程开发。而StringBuilder没有,所以是线程不安全的。 效率,StringBuilder > Stri...

【Tensorflow】TF中的字符串tf.string_不用先生的博客-程序员宅基地

目录string 的定义string 类型常用的函数tf.as_string()tf.substr()tf.string_to_number()tf.string_split()tf.string_join()tf.reduce_join()总结Tesorflow 版本:1.7.0,1.14.0string 的定义 Tensorflow ...

Android中跳转到系统设置界面大全_zhanglihow的博客-程序员宅基地

android.provider.Settings。1.   ACTION_ACCESSIBILITY_SETTINGS :    // 跳转系统的辅助功能界面            Intent intent =  new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS);             startActivity(inten

推荐文章

热门文章

相关标签