Проблема в посте php ajax - PullRequest
       10

Проблема в посте php ajax

1 голос
/ 06 декабря 2010

Я хочу сделать пост в php ajax. (Пост значение без обновления страницы) вот мой код. Он может вернуть значение и показать в <div id="msg"></div>, но я также хочу использовать это значение.

В помощь @ benhowdle89 я сделал $name= "<div id='msg'></div>". но когда я использую echo $name, в исходном коде я вижу <div id='msg'></div>(html tag), это не чистое значение, поэтому я попытался использовать strip_tags, но значение потеряно. Кажется, левый тег Ajax указал, значение также исчезло. Все еще жду помощи ...

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, затем получить значение самостоятельно без обновления страницы. один боттон с двумя значениями, я хочу взорвать их и, наконец, получить $namea и $nameb. Я хочу использовать их в другой части PHP.

Ответы [ 2 ]

1 голос
/ 07 декабря 2010

Вы можете поместить ответ 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'];
0 голосов
/ 07 декабря 2010

включив $name= "<div id='msg'></div>" и вызвав echo $name, вы просто указываете программе сохранить "" в переменной $ name и затем выведите то, что хранится в этой переменной.Вот почему вы получаете нежелательный вывод.

не уверен, если у вас возникли проблемы с публикацией значения или его отображением в значении, но вам нужно отобразить переменную, в которой хранится userName, может потребоватьсяотправьте это из ajax в php и установите для него $ name.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...