【问题标题】:send javascript/json variable to a php sql request将 javascript/json 变量发送到 php sql 请求
【发布时间】:2018-02-23 13:46:13
【问题描述】:

我正在使用带有 serverSide 选项的数据表,但我想将一个 javascript 变量传递给 php 变量,以便稍后在 php sql 选择请求中使用它。 我需要在不刷新页面的情况下发送该 var。 谢谢

<script type="text/javascript">
$( document ).ready(function() {
$('#employee_grid').DataTable({
		 "bProcessing": true,
         "serverSide": true,
		 "bStateSave": true,
		 "searching": true,
		"aaSorting": [[0,'desc']],
	
         "ajax":{
            url :"response2.php", //json datasource
            type: "post",  //type of method, by default would be get

			"aoColumnDefs" : [
				 {
				   'bSortable' : true,
				   'aTargets' : [1,2,3,4,5,6,7,8,9]
				 }],
				
			"dataSrc": function (jsonData) {
			  for ( var i=0, len=jsonData.data.length ; i<len ; i++ ) {
		
			  	jsonData.data[i][1] = '<font size="4px">'+jsonData.data[i][2]+'</font>';
				<?php
        $phpvar=jsonData.data[i][2];
        $sql="SELECT * FROM clientwhere id='$phpvar'";
        ...
        ?>
			  }
			  return jsonData.data;
			},
            error: function(){  // error handling code
             // $(".employee-grid-error").html("");
              //$("#employee_grid").append('<tbody class="employee-grid-error"><tr><th colspan="3">No data found in the server</th></tr></tbody>');
              $("#employee_grid_processing").css("display","none");
            }
          }
		  
        });   
});
</script>

【问题讨论】:

    标签: javascript php json datatables server-side


    【解决方案1】:

    使用$_SESSION

    1. 从当前页面(例如index.php)发出jQuery $.ajax POST(或GET)请求,将JavaScript 变量作为参数传递到另一个页面(例如 processValue.php)。

    (POST)示例:

    $.ajax({
      method: "POST",
      url: "processValue.php",
      data: { someVariable: someValue }
    });
    
    1. processValue.php中,将接收参数的值保存到PHP的$_SESSION变量中

    示例:

    $_SESSION["javascriptVariableValue"] = $_POST['someVariable'];
    
    1. 从此时开始(即请求成功完成后),您的 $_SESSION 变量将具有可在 index.php 中访问的值,您可以稍后处理

    注意:

    1. index.php 和 processValue.php 文件名仅用于示例目的...

    2. 切勿直接访问 $_POST 而不进行清理等。 --- 这仅用于示例目的并让您继续前进!

    3. index.phpprocessValue.php 中,确保你使用session_start();

    【讨论】:

    • 我试过了,但会话变量不会为每一行更新,它总是取第一个值。我需要在每行调用时更新会话变量
    • @user8045351 您应该对每行进行更新调用,然后... 至于存储值:您可以将其作为数组存储到您的 $_SESSION... 键值对中;例如,键将是行的 id...然后,当查找时间到来时,只需使用键从您的 $_SESSION 获取值
    • //processValue.php &lt;?php session_start(); $_POST['someVariable']=filter_var($_POST['someVariable'], FILTER_SANITIZE_STRING); $_SESSION["javascriptVariableValue"] = $_POST['someVariable']; ?&gt; //index.php $.ajax({ method: "POST", url: "processValue.php", data: { someVariable: jsonData.data[i][0] } }); &lt;?php echo $_SESSION["javascriptVariableValue"]; ?&gt; 是否正确@Rushikumar
    • @user8045351 查看filter_input 示例:filter_input(INPUT_POST, 'someVariable')。也看看Sanitize filters
    • 我尝试了您的解决方案,但会话变量仍然只保存所有行的第一个值,@Rushikumar 可能是什么问题??
    猜你喜欢
    • 1970-01-01
    • 2012-01-01
    • 1970-01-01
    • 2015-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多