【问题标题】:Passing javascript variable into php variable via ajax is not working通过ajax将javascript变量传递给php变量不起作用
【发布时间】:2014-11-28 13:14:31
【问题描述】:

test.php

<script src="https://code.jquery.com/jquery-1.11.1.js"></script>  
<script>
function testing(){
 $.ajax({
                        url: 'test.php',
                        type: 'GET',
                         data: { va: "answer" },
                         success: function(data) {
                             // do something;
alert("answer")  ;                       }
                     });



}
</script>

<textarea><?php 
$compare= $_GET['va'];
echo $compare; ?>
</textarea>  

<button onclick="testing();">click</button>     

当我单击按钮时收到一条警报消息,但 textarea 中没有任何内容。无法将 javascript 变量导入 php 代码。这里有什么问题?

【问题讨论】:

  • 它正在工作,但您没有刷新页面。 Textarea 它在时间 0 渲染。然后您在时间 1 进行 Ajax 调用。Textarea 它已经渲染,所以它没有刷新。

标签: javascript php ajax


【解决方案1】:

AJAX 和 PHP 不同。

PHP 是基于服务器的,而 AJAX 是基于浏览器的。

您正在获取数据:

您需要使用 javascript 本身更新此数据。

由于页面没有刷新PHP,这里就不更新了。

success: function(data) {
  $("textarea").val(data); // You need update the value with Javacript.
}

【讨论】:

  • 使用 $("textarea").val(data); 更新 textarea 时,会将整个代码放入 textarea 而不是获取值。
  • 后端文件 test.php 可能包含一些 HTML 输出。请注意这一点。
  • 那有什么办法可以避免那个 html 输出
【解决方案2】:

在进行 ajax 调用后,您永远不会更新 textarea。您需要将id 属性添加到textarea,以便清楚您指的是哪个textarea,假设id 是answer

<textarea id="answer"><?php 
$compare= $_GET['va'];
echo $compare; ?>
</textarea> 

然后使用$('#answer').val(data)在success函数中设置textarea的值

function testing(){
    $.ajax({
            url: 'test.php',
            type: 'GET',
            data: { va: "answer" },
            success: function(data) {
                         // do something;
                         alert("answer");
                         $('#answer').val(data);
                      }
    });
}

【讨论】:

    猜你喜欢
    • 2015-04-01
    • 2013-03-05
    • 1970-01-01
    • 1970-01-01
    • 2015-04-28
    • 1970-01-01
    • 2011-09-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多