2010-12-06 3 views
1

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

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

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"]; 
?> 

Это то, что я хочу. post значение из index.php, затем получите значение самостоятельно, не обновляя страницу. один botton с двумя значениями, я хочу взорвать их и, наконец, получить $namea и $nameb. Я хочу использовать их в другой php-части.

+0

Где вы хотите использовать предоставленную стоимость? В PHP или javascript? – matthewpavkov 2010-12-06 21:26:25

ответ

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); 
     } 
    } 
} 

РНР файл будет выглядеть так:

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

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

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

Я попытался добавить ответ ajax после моего кода `var msg = document.getElementById (" msg "); `но в firebug, он показывает неправильный ... – 2010-12-06 21:48:59

0

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

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