javascript 通过 Ajax 将多个变量通过变量传递给 PHP 不起作用

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/28271867/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-28 08:42:14  来源:igfitidea点击:

Pass multiple variables via Ajax through variable to PHP not working

javascriptphpjqueryajaxurl

提问by Wignu

Am wanting to pass three variables, one a constant the other two from a date picker, through the URL using Ajax. Am able to pass the constant through fine however the variables for the dates are just being passed as the variable name.

我想通过 URL 使用 Ajax 传递三个变量,一个是常量,另外两个来自日期选择器。我能够很好地传递常量,但是日期的变量只是作为变量名传递。

Below is the code for the date pickers:

以下是日期选择器的代码:

        <tr>
            <td>
                <input type="text" id="range1" size="10" data-datepick="rangeSelect: true, minDate: 'new Date()'"/>
            </td>
            <td>
                <input type="text" id="range2" size="10" data-datepick="rangeSelect: true, minDate: 'new Date()'"/>
            </td>
            <td>
                <button type="button" onclick="dateRangeFunction()">Go</button>
            </td>   
        </tr>

The variables range1 and range2 contain the dates to be passed, the function to create the URL and pass the variables is below:

变量 range1 和 range2 包含要传递的日期,创建 URL 和传递变量的函数如下:

        function dateRangeFunction() {
            var range1 = document.getElementById('range1').value;
            var range2 = document.getElementById('range2').value;

            if(range1 == null || range1=="") {
                alert("Please Select A Date To Search From");
                return;
            }
                $.ajax({
                    type: 'GET',
                    url: 'daterangedetails.php?pt=7&rngstrt=" + range1 + "&rngfin=" + range2',
                    success: function (data) {
                    document.getElementById('rangeDetails').innerHTML = data;
                    }
                });
            }           
</script>

Doing an alert on the two variables shows the correct dates as selected, however when passed via the URL and using $_GET to echo the resultant variable on rngstrt and rngfin in the daterangedetails.php only gives the variable names as "range1 " & " range2. The pt value is passed correctly.

对两个变量执行警报显示所选的正确日期,但是当通过 URL 传递并使用 $_GET 回显 daterangedetails.php 中 rngstrt 和 rngfin 上的结果变量时,仅将变量名称提供为“range1”和“range2” . pt 值正确传递。

The code used to echo the variables is:

用于回显变量的代码是:

<?php
session_start();

include 'dbconnect.php';

$dateFrom = $_GET['rngstrt'];
$dateTo = $_GET['rngfin'];
$rangeType = $_GET['pt1'];

echo "Date From: ".$_GET['rngstrt']."<br/>";
echo "Date To: ".$dateTo."<br/>";
echo "Date: ".$criteriaDate."<br/>";
echo "Type: ".$rangeType;
?>

Any help would be greatly appreciated, I was thinking maybe I have to put the variables into an array?? But am unsure how to do that if that's how I should go.

任何帮助将不胜感激,我在想也许我必须将变量放入数组中?但是如果我应该这样做,我不确定该怎么做。

采纳答案by Lawrence Edel

function dateRangeFunction() {
        var range1 = $('range1').val;
        var range2 = $('range2').val;

        if(range1 == null || range1=="") {
            alert("Please Select A Date To Search From");
            return;
        }
            $.ajax({
               type  : 'GET',
                url  : 'daterangedetails.php',
                data : {pt:'7',rngstrt:range1, rngfin:range2},
                success: function (data) {
                document.getElementById('rangeDetails').innerHTML = data;
                }
            });
        }           

回答by Yehan Anushka

xhttp.open("GET", "url?parameter_name="+value + "&parameter_name="+value, true);
xhttp.send();

回答by Shaunak Shukla

url: 'daterangedetails.php?pt=7&rngstrt=" + range1 + "&rngfin=" + range2',

url: 'daterangedetails.php?pt=7&rngstrt=" + range1 + "&rngfin=" + range2',

Should be

应该

url: 'daterangedetails.php?pt=7&rngstrt=' + range1 + '&rngfin=' + range2,

url: 'daterangedetails.php?pt=7&rngstrt=' + range1 + '&rngfin=' + range2,