【问题标题】:ajax variable not usable in php scriptajax 变量在 php 脚本中不可用
【发布时间】:2015-02-20 21:25:21
【问题描述】:

我编写了一个 AJAX 脚本,它需要将一些变量发送到 PHP 脚本,然后返回一个小脚本来连接服务器。但是,我似乎可以使用从 AJAX 脚本传递的存储变量

<script>
function executeSsh() {
    var username = "<?php echo $connect_d["username"] ?>";
    var password = "<?php echo $connect_d["password"] ?>";
    var ip       = "<?php echo $connect_d["dedicatedip"] ?>";

    $.ajax({
        url: "functions.php",
        dataType: 'text',
        type: "post",            
        data: { username: username, password: password, ip: ip },
        success: function(data) {
                $('#sshcall').html( data );
            },
        error: function(jqXhr, textStatus, errorThrown) {
                alert("Request failed: " + textStatus);
            }
    });

    $('.blinstbtn').fadeToggle(1000);
}
</script>

所以现在您可以看到三个变量按应有的方式传递给 PHP,并按应有的方式存储在单独的变量中。但是此时我无法再使用它们,并且出现连接错误。

<?php
include('Net/SSH2.php');

$username = $_POST['username'];
$password = $_POST['password'];
$ip       = $_POST['ip'];

echo $username. "<br><br>". $password;

$ssh = new Net_SSH2($ip);
if (!$ssh->login($username, $password)) {
    exit('Login Failed');
}

$ssh->read('/.*@.*[$|#]/', NET_SSH2_READ_REGEX);
$ssh->write("uptime\n");
$ssh->setTimeout(10);
$output = $ssh->read('/.*@.*[$|#]|.*[P|p]assword.*/', NET_SSH2_READ_REGEX);

echo "<pre>". $output . "</pre>";
?>

因此,当我回显每个变量时,它应该是正确的值,但是当我尝试使用脚本时,我不断收到登录无效的消息。我知道连接到服务器的脚本正在工作,因为我只使用原始信息对其进行了测试。

知道我在这里缺少什么以及如何解决它。还有一种方法可以加密 AJAX 发送的数据字符串,这样现在人们就可以使用 Firebug 之类的东西来获取这些值了吗?

感谢您的帮助。

【问题讨论】:

  • 既然你试图返回 html,我会使用“html”数据类型而不是文本,只是开始......你能 error_log($_POST['username']);看看它是否在错误日志中返回预期值?您甚至可以尝试登录整个 post 对象以查看它是否通过 error_log(print_r($_POST, true));
  • 也说过变量被传递并存储到变量中。当我使用 echo 然后我得到正确的响应。但在那之后,由于某种原因,我无法使用它来填写我需要的信息。好像没有足够的时间将变量传递给较低的脚本或其他东西。
  • 请检查错误日志并在上面写上任何相关的行。也可能值得检查客户端错误(如果有的话)。
  • 您必须在 ajax 而不是 url 中使用:“templates/cloudblok/php/functions.php”。值“url”将从“http://”或“https”开始。
  • 一件事,在var username 等处,你需要做var username = '&lt;?php echo $connect_d["username"] ?&gt;';(注意单引号和双引号)。双引号内的双引号是行不通的。

标签: javascript php jquery ajax variables


【解决方案1】:

我刚刚想通了。我需要在 $post 前面使用 trim (http://php.net/manual/en/function.trim.php) 来完成这项工作。我使用 post 时可能添加了空格。不知道这怎么可能。但这对我有用。

感谢所有输入。如果有人想告诉我为什么在使用 post 时要添加空格,那就太好了。

谢谢

【讨论】:

    猜你喜欢
    • 2020-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-14
    • 2016-11-21
    • 1970-01-01
    • 1970-01-01
    • 2014-10-27
    相关资源
    最近更新 更多