如何检索变量而不是echo

时间:2014-06-20 09:34:49

标签: javascript php ajax

我刚刚开始学习Ajax并想知道如何获取PHP变量而不是echo i followed this

ajax_php_code.php

echo 'Your name is '.$_POST['firstname'].''$_POST['lastname].'';

HTML / AJAX

function ajax_post(){
var hr = new XMLHttpRequest ();
var url = "ajax_php_code.php";
var fn = document.getElementById('first_name').value;
var ln = document.getElementById('last_name').value;
var vars = "firstname="+fn+"&lastname="+ln;
hr.open("POST", url, true);

hr.setRequestHeader("content-type", "application/x-www-form-urlencoded");
hr.onreadystatechange = function(){
    if(hr.readyState == 4 && hr.status == 200){
        var return_data = hr.responseText;
        document.getElementById('status').innerHTML = return_data;
    }
}

hr.send(vars);
document.getElementById('status').innerHTML = "processing...";

}

<input type="text" id="first_name" name="first_name" placeholder="Namn"  />
<input type="text" id="last_name" name="last_name" placeholder="Efternamn"  />
<input type="submit" value="Skicka data" id="knapp" />
<div id="status">

这个工作正常,但我想发送一个变量而不是echo是可能的吗?

6 个答案:

答案 0 :(得分:3)

通常的做法是让你的PHP发回JSON,然后解析那个JSON客户端。

例如,在PHP中:

$data = array(
    firstname => $_POST['firstname'],
    lastname =>  $_POST['lastname']
);
header("Content-Type", "application/json");
echo json_encode($data);

然后是客户端,在你的ajax成功函数中:

var data = JSON.parse(hr.responseText);
// Now you can use data.firstname and data.lastname

答案 1 :(得分:2)

您可以创建json Web服务,而不是返回直接outptut

echo json_encode(array("status"=>"success","message"=>"Your name is ".$_POST['firstname']." ".$_POST['lastname],"first_name"=>$_POST['firstname'],"last_name"=>$_POST['lastname']));

更改hr.onreadystatechange函数中的代码

`var response = eval(“(”+ hr.responseText +“)”); //将响应转换为json if(response.status ==“success”){

alert(response.message); //使用变量first_name和last_name&amp; amp;信息 }`

答案 2 :(得分:0)

是的,确定有可能:

<?php
    header('Content-Type: application/json');
    $your_variable='value';
    echo json_encode($your_variable);
?>

答案 3 :(得分:0)

让你的脚本调用($ foobar)。

你可以让你的脚本结束。像这样:

  

标题(&#39;内容类型:application / json&#39;);

     

死(json_encode($ array))

以JSON格式传输数组。

答案 4 :(得分:0)

如何以JSON格式返回数据。

$data = array(
    'firstname' => filter_input(INPUT_POST, 'firstname', FILTER_SANITIZE_STRING),
    'lastname' => filter_input(INPUT_POST, 'lastname', FILTER_SANITIZE_STRING)
);

header('Content-Type: application/json');
echo json_encode($data);
die();

然后在javascript:

if(hr.readyState == 4 && hr.status == 200){
    var jsonObj = JSON.parse(hr.responseText);
    alert("My name is " + jsonObj.firstname + " " + jsonObj.lastname);
}

答案 5 :(得分:0)

好的,我们在这里有很多答案,让我告诉你一种方法,我认为最好将用户名和密码等详细信息作为AJAX请求发送到服务器,并将结果发回。

以下是HTML / php文件的简单字段,例如abc.php:

<label for="username">Username:</label>
<input type="text" id="username" name="username" placeholder="Enter Username" />

<label for="password">Password:</label>
<input type="password" name="password" id="password" placeholder="Enter Password" />

<input type="button" id="submit" value="Submit">

<div id="output"></div> //Shows the output or the success message 

<script>
 $("#submit").click(function() {
    var user = $("#username").val();           //Get the value from field username
    var pass = $("#password").val();            // same as above
    var obj = {'username': user, 'password': pass};               // create a plain object
    var json = JSON.stringify(obj);              // convert to JSON string
    console.log(obj);  //Just for checking the output
    console.log(json); //same as above

    $.post('test.php', json ,function(response) {              //send to your service file "tst.php, the JSON
        alert(response);                     //see the response from the server

        if(!response) {                     //cases where data is not received
            $("#output").html("Server Not Responding, Please Try Again");
        }
        else {

            var data = JSON.parse(response);              //convert to JSON object
            $("#output").html(data.username);             //access the data received



        }
    });

});
 </script>

test.php接收html体内的json,我们可以检索它,用它来检查身份验证等目的并发回消息或响应代码。在这里,我发回了相同的obj

test.php
 <?php
 $json = file_get_contents('php://input');
 $obj = json_decode($json);
 echo json_encode($obj);

 ?> 

由于发送和接收的数据都是json,因此可以避免在AJax请求(abc.php)中写入“application / json”并提及标题(“content-type:application / json”)。