php ajax post值的问题

时间:2010-12-06 20:57:25

标签: php ajax post

我想制作一个php ajax帖子。(没有刷新页面的帖子值)这里是我的代码。它可以返回值并显示在<div id="msg"></div>中,但我也想使用此值。

在@ benhowdle89的帮助下,我做了$name= "<div id='msg'></div>"。但是当我使用echo $name时,在源代码中,我可以看到<div id='msg'></div>(html tag),这不是纯值,所以我尝试使用strip_tags,但值丢失了。似乎左边的ajax指向div标签,价值也消失了。还在等待帮助...

的index.php

<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<script language="javascript"> 
function saveUserInfo() { 
    var msg = document.getElementById("msg"); 
    var f = document.user_info; 
    var userName = f.user_name.value; 
    var url = "value.php"; 
    var postStr   = "user_name="+ userName; 
    var ajax = false; 

    if(window.XMLHttpRequest) { 
        ajax = new XMLHttpRequest(); 
        if (ajax.overrideMimeType) { 
            ajax.overrideMimeType("text/xml"); 
        } 
    } else if (window.ActiveXObject) { 
        try { 
            ajax = new ActiveXObject("Msxml2.XMLHTTP"); 
        } catch (e) { 
            try { 
                ajax = new ActiveXObject("Microsoft.XMLHTTP"); 
            } catch (e) { 
            } 
        } 
    } 

    if (!ajax) { 
        window.alert("wrong"); 
        return false; 
    } 

    ajax.open("POST", url, true); 
    ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); 
    ajax.send(postStr); 
    ajax.onreadystatechange = function() { 
        if (ajax.readyState == 4 && ajax.status == 200) { 
            var myPhpVariable = ajax.responseText; 
            msg.innerHTML = myPhpVariable; 
            // myPhpVariable is now a variable which you can use
            alert( myPhpVariable ); 
        } 
    } 
} 
</script> 
</head> 
<body>
<?php
echo $name="<div id='msg'></div>";
$name1=strip_tags($name);
$name2 = explode("|",$name1);
$namea=$name2[0];
$nameb=$name2[1];
?>
<form name="user_info" id="user_info" method="post"> 
<input name="user_name" type="hidden" value="abc|def" /><br /> 
<input type="button" value="abc|def" onClick="saveUserInfo()"> 
</form> 
</body> 

value.php

<?php 
echo $_POST["user_name"]; 
?> 

这就是我想要的。从index.php发布值,然后通过self获取值而不刷新页面。一个带有两个值的按钮,我想爆炸它们,最后得到$namea$nameb。我想在其他php部分使用它们。

2 个答案:

答案 0 :(得分:1)

你可以把ajax响应放到一个javascript变量中,然后你可以从那里操作它:

var myPhpVariable = ajax.responseText;
msg.innerHTML = myPhpVariable;
alert( myPhpVariable );

这是一个有效的javascript示例(完整代码):

function saveUserInfo() {
    var msg = document.getElementById("msg");
    var f = document.user_info;
    var userName = f.user_name.value;
    var url = "value.php";
    var postStr   = "user_name="+ userName;
    var ajax = false;

    if(window.XMLHttpRequest) {
        ajax = new XMLHttpRequest();
        if (ajax.overrideMimeType) {
            ajax.overrideMimeType("text/xml");
        }
    } else if (window.ActiveXObject) {
        try {
            ajax = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                ajax = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {
            }
        }
    }

    if (!ajax) {
        window.alert("wrong");
        return false;
    }

    ajax.open("POST", url, true);
    ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    ajax.send(postStr);
    ajax.onreadystatechange = function() {
        if (ajax.readyState == 4 && ajax.status == 200) {
            var myPhpVariable = ajax.responseText;
            msg.innerHTML = myPhpVariable;
            // myPhpVariable is now a variable which you can use
            alert( myPhpVariable );
        }
    }
}

PHP文件看起来像:

$postVar = $_POST["user_name"];
$postVarArr = explode('|', $postVar);

// will show abc
//echo $postVarArr['0'];

// will show def
echo $postVarArr['1'];

答案 1 :(得分:0)

通过包含$name= "<div id='msg'></div>"并调用echo $name,您只是告诉程序在$ name变量中存储“”,然后打印存储在该变量中的内容。这就是你获得不需要的输出的原因。

不确定您是否在发布值或在值中显示它时遇到问题,但是您需要回显存储userName的变量,可能需要将其从ajax发送到php并将其设置为$名。