【问题标题】:How to get javascript value into php variable without reloading the page using ajax如何在不使用 ajax 重新加载页面的情况下将 javascript 值转换为 php 变量
【发布时间】:2018-01-12 05:05:58
【问题描述】:

这里我想在不使用任何 POST 或 GET 方法的情况下从 JavaScriptPHP 变量中获取一个值。

这里我给出 HTML 代码:

<input type="number" name="days" id="days" class="col-sm-2 form-control" placeholder="DAYS"> 

<input type="number" name="night" id="night" class="col-sm-2 form-control" placeholder="NIGHT"> 
                            
<button id="generate" onclick="GetValue()" class="btn btn-danger">Generate</button>

Javascript 代码

<script>
$(function(){
    $("#generate").on('click', function(){
        var days = $("#days").val();
        var night=$("#night").val();
        var base_url = $('#base').val();
        $.ajax({
        type: 'post',
        url: base_url,
        data: {'days' : days, 'night': night}, 
        success: function( data ) {
        console.log(data);
        }
      });
    });
  });
</script>

php代码

<?php
$days = $_POST['days']; 
$night = $_POST['night'];
echo $days . " " . $night;
?>

变量值不起作用。

【问题讨论】:

标签: javascript php jquery html


【解决方案1】:

您不能直接将javascript变量分配给PHP变量,这就是使用ajax的原因。

如果您想在不刷新页面并使用相同页面的情况下对服务器端执行客户端变量操作,那么您必须在客户端启动和使用退出之前在页面顶部编写 PHP 代码在 PHP 响应完成后中断。并且在 jquery ajax 中忘记了 URL 部分,因为您使用同一页面进行请求和响应。

注意:确保包含 jQuery

覆盖表单标签中的所有元素,以便我们可以使用序列化方法简单地发送数据。

index.php

<?php
    if(isset($_POST) && !empty($_POST['days'])){
        $days = $_POST['days']; // you can write the variable name same as input in form element.
        $night = $_POST['night'];

        //Perform any operations on this variable and send in response whatever you want it will send the response to success function of jquery ajax and you can check response in `data`

        echo $days . " " . $night;
        exit();
    }
?>


<!--<form id='frmsbmt' method='post' action='#'>-->

    <input type="number" name="days" id="days" class="col-sm-2 form-control" placeholder="DAYS"> 

    <input type="number" name="night" id="night" class="col-sm-2 form-control" placeholder="NIGHT"> 

    <button id="generate"  class="btn btn-danger">Generate</button>
<!--</form>-->
<script>
    $(function(){
        $("#generate").on('click', function(){
            var days = $("#days").val();
            var night=$("#night").val();
            var base_url = $("#base").val();
            $.ajax({
                type: 'post',
                //url: base_url,
                data: {'days' : days, 'night': night}, //$("#frmsbmt").serialize(), //form serialize will send all the data to the server side in json formate, so there is no need to send data seperately.
                success: function( data ) {
                    console.log(data);
                    //alert(data);
                    // It will write the response in developer tools console tab or you can alert it.
                }
            });
        });
    });
</script>

【讨论】:

  • 不使用表单可以吗?
  • 是的,有可能@raheez 请检查更新后的答案。
  • 另一个帮助我创建了一个变量 var base_url = $('#base').val();获取 url 那么我怎样才能把它放在 ajax 的 url 字段中
  • 我没听懂你能不能请你更详细地解释或更新你真正想问的问题?
  • 如果您从某个隐藏字段或某处获取 url,那么您可以按照上述方式执行此操作,我已更新我的答案,请检查一次
【解决方案2】:

您可以为此使用 AJAX 调用。

function GetValue() {
    var str = document.getElementById('days').value;
    $.ajax({
        type: 'post',
        url: 'text.php',
        data: {
            someValue: str
        },
        success: function( data ) {
            console.log( data );
        }
    });
}

【讨论】:

  • 我在同一页面中使用,所以在 url 我应该给什么?
【解决方案3】:

在不使用任何 post 或 get 方法来检索变量的情况下回答您的问题是不可能的。一种语言是服务器端语言,一种语言是客户端语言,如果这两种语言从不通过既定标准进行通信,并且协议在两者之间传递变量是不可能的。 PHP 被翻译为服务器端,这意味着客户端接口并不真正知道它的存在,除非有一个与方法(即 get 或 post)相关联的操作。 Ajax 请求使用 POST 或 GET 或其他已建立的方法之一进行通信。

【讨论】:

    猜你喜欢
    • 2017-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-25
    • 2023-03-24
    • 1970-01-01
    • 2013-08-20
    • 1970-01-01
    相关资源
    最近更新 更多