使用AJAX从页面获取PHP变量

时间:2014-07-29 09:18:35

标签: javascript php jquery ajax

我有两页:

1.php 2.php

我正试图通过AJAX请求从2.php获取PHP变量到1.php。

这是1.php

中的脚本
<script>
    jQuery('#refresh').click(function(e){
        e.preventDefault();
        jQuery.ajax({
            type:'POST',
            url: '2.php',
            data: { variable: '<?php echo $PHPvariable ?>' },
            dataType : 'json',
            success:function(response){
                alert(variable);
            }
        })
    });
</script>

为了更好地理解,从1.php文件中调用此脚本。 正如您所看到的,我正在尝试检索2.php中声明的$ PHPvariable变量。 我这样做了吗?

这是2.php

中的varialbe delcaration
$PHPvariable = 'bla1bla2bla';
$variable = array('PHPvariable ' => $PHPvariable );
echo json_encode($variable);

有什么问题?

2 个答案:

答案 0 :(得分:0)

在2.php中,可以使用variable(在PHP中)访问$_POST['variable'];(使用JS的POST)。

1.php中的

sessionVar(JS)未定义(JS),response.sessionVar(JS)(来自success:function(response){)可以访问数据。

在2.php中,你必须打印像echo json_encode(array('sessionVar' => $sessionVar));(PHP)这样的数据。

更新:为了防止混淆,我指出代码部分是PHP或JS。

更新

您无法在响应中公开数据二进制映像,因为在常见HTTP中没有多部分响应(不确定SPDY)。曝光图像或数据,而不是两者。

您可以做的是对图像进行base64编码并将图像作为数据的一部分输出:

echo json_encode(array(
    'image' => base64_encode($image),
    'variable' => $someVariable),
);

另一种方法不是使用ajax而是使用phps include('2.php');,然后该变量在1.php中可用。

答案 1 :(得分:0)

  

为了更好地理解,这个脚本是从内部调用的   1.php文件。正如您所看到的,我试图检索2.php中声明的$ PHPvariable变量。我这样做了吗?

要从1.php2.php传递变量,您必须使用form

这是登录用户的示例

<form action="2.php" method="post">
    <table>
    <tr>
        <td>
            username:
        </td>
        <td>
            <input type="text" name="userName">
        </td>
    </tr>
    <tr>
        <td>
            password:
        </td>
        <td>
            <input type="password" name="password">
        </td>
    </tr>
    <tr>
        <td>
            <input type="submit" name="invio" value="login">
        </td>
    </tr>
    </table>
</form>

现在在文件2.php内验证传递的变量。

<?php
ini_set('display_errors', 1);
error_reporting(E_ALL & ~E_NOTICE);

if (isset($_POST['invio']))
    if (empty($_POST['userName']) || empty($_POST['password']))
        $messaggio = "dati mancanti";
    else {
        session_start();
        $_SESSION['userName']  = $_POST['userName'];
        $_SESSION['dataLogin'] = time();
        $_SESSION['ruolo']     = $ruolo[0];

        $messaggio = '<p> <h1 style="color:red">Benvenuto </h1> </p>';


        ;
    }

?>

现在您可以打印(始终在页面2.php内)消息的结果:

<?php
echo $messaggio;
echo $_POST['userName'];
?>

要在页面1.php中返回,您可以使用:

  <?php
header('Location: 1.php');
?>

在php的脚本中。

如果您想使用AJAX并且没有刷新页面,我认为您需要this exercise

我建议你这样做:

var value="your value"
xmlhttp.open("GET","gethint.asp?q="+value,true);

gething.php

 <?php
//get the q parameter from URL
 $q=$_GET["q"];

 //lookup all hints from array if length of q>0
 if (strlen($q) > 0)
 {
  echo $q;
}else{
 echo "miss value";
}
?>