+ -
当前位置:首页 → 问答吧 → 新手关于 Ajax的 XMLHttpRequest “数据发送” 的问题 。。。

新手关于 Ajax的 XMLHttpRequest “数据发送” 的问题 。。。

时间:2011-08-16

来源:互联网

大家好,
我看了XMLHttpRequest 的数据发送方式,
我想向PHP服务器提交一个表单,里面有很多元素,
我用一下代码,PHP服务器并没有收到任何数据:
JScript code

xmlhttp.open("POST","test1.php",true);
xmlhttp.send(null);



我又用了以下代码:
JScript code

xmlhttp.open("POST","test1.php",true);
xmlhttp.send("id="id & "article="article & "date="date);



这下子收到数据了。。。

我是想问,XMLHttpRequest 发送数据,是不是一定要在send()里面标注要发送的数据,或者用get的方法,在url后面添加一串东西才能发送数据啊? 我的表单有很多元素,如果是这样的话,这不代表了我的send()里面要写一大串东西吗?

以下是我的完整代码:
JScript code

<!--
// 定义XMLHttpRequest对象;
var XmlObject;
// 完成XMLHttpRequest初始化;
function CreatXMLHttpRequest(){
    if(window.XMLHttpRequest){
        XmlObject = new XMLHttpRequest();
        }
    else if(window.ActiveXObject){
        try{
            XmlObject = new ActiveXObject("Msxm12.XMLHTTP");
            }
        catch(e){
            try{
                XmlObject = new ActiveXObject("Microsoft.XMLHTTP");
                }
            catch (e){
                ShowMSG(e);
                }
            }
        }
    }

//发送信息send
function SendRequest(id){
    CreatXMLHttpRequest();
    var url = "data_process.php";
    XmlObject.open("POST",url,true);
    XmlObject.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    XmlObject.onreadystatechange = responseToPage;
    XmlObject.send("id="+id);
    }

// 判断onreadystate 状态,并在网页显示返回的数据;
function responseToPage(){
    if(XmlObject.readyState == 4 && XmlObject.status == 200){
        var responseText = XmlObject.responseText;
        document.getElementById("responseText").innerHTML = responseText;
        }
    }

//这个是显示信息函数,包括错误信息显示;
function ShowMSG(msg){
    window.alert(msg);
    }



HTML code

<input id="article" name="article" type="text" /></br>
     <input type="button" value="Submit" onclick='SendRequest(document.getElementById("article").value)' />


作者: BraveRu   发布时间: 2011-08-16

楼主,如果你想向服务器POST数据,只有像你所说的那样会提交很多的数据.

作者: xiage   发布时间: 2011-08-16

你可以自己写一个方法获取一个表单中的全部数据,然后根据input的name拼接成需要的字符串
也就是key1=value1%key2=value2的这种形式
然后send的时候直接getData(表单名)

作者: KongHuLu   发布时间: 2011-08-16

引用 2 楼 konghulu 的回复:

你可以自己写一个方法获取一个表单中的全部数据,然后根据input的name拼接成需要的字符串
也就是key1=value1%key2=value2的这种形式
然后send的时候直接getData(表单名)


能否举个例子呢?谢谢。。。

作者: BraveRu   发布时间: 2011-08-16

POST方法要在send中发送键值对字符串

get要在url后面添加键值对

如果懒得手动组合键值对,建议改用jquery框架,有serialize方法可以将表单序列化为键值对

如果不想导入jquery,自己参考jquery怎么写的序列化方法

作者: showbo   发布时间: 2011-08-16