使用AJAX将变量从Javascript传递到PHP

使用AJAX将变量从Javascript传递到PHP,javascript,php,ajax,Javascript,Php,Ajax,我试图将变量从Javascript文件传递到PHP文件。 从我的js文件: dataQuery = { range: [[range.lower, range.upper]], detail: { id: detail.id } }; $.ajax({ type: "POST", async: true, url: scope.fetchUrl, data: { query: dataQuery } }) .done(fun

我试图将变量从Javascript文件传递到PHP文件。 从我的js文件:

dataQuery = {
    range: [[range.lower, range.upper]],
    detail: { id: detail.id }
  };

 $.ajax({
    type: "POST",
    async: true,
    url: scope.fetchUrl,
    data: { query: dataQuery }
    })
    .done(function( data ) {
        alert("success!");
    }
在我的php文件中,我有会话变量,因为我需要进行oauth身份验证

if (isset($_SESSION['accessToken'])) 
{
    $companyId = "1234";
    $rollupFreq = "1H";
    $oauth->setToken(
        $_SESSION['accessToken'],
        $_SESSION['accessTokenSecret']);
    $apiUrl = ($apiBaseUrl
                . '&company_id=' . urlencode($companyId) 
                . '&rollup_frequency=' . urlencode($rollupFreq) 
                . '&start_datetime_utc=' . urlencode($range['lower'])
                . '&end_datetime_utc=' . urlencode($range['upper'])
                );
    try
    {
        header('Content-Type: application/json');       

        $data = $oauth->fetch($apiUrl);
        $responseInfo = $oauth->getLastResponse();
        print_r($responseInfo);
        if (isset($_GET['query']))
        {
            $range = $_GET['query'];
            print_r($range);
            }
    }
}
当我尝试打印$range时,不会显示任何内容,当我尝试在url中使用$range中的值时,会得到“Undefined variable:range in url”


任何帮助都将不胜感激

您正在使用POST创建AJAX请求:

 $.ajax({
     type: "POST",
     //...
 });
然而,在PHP代码中,您使用了
$\u GET
变量:

$range = $_GET['query'];
$\u GET
更改为
$\u POST

您还使用了
$range
变量(例如在
urlencode($range['upper'])
),但是没有任何代码真正声明,更不用说初始化它了。这就是您看到的“未定义变量”通知的原因

最后,发送到PHP的数据如下所示:

$_POST['query']['range'] = array(
    array(range.lower, range.upper)//whatever these values may be
);
因此,要获得
范围。较低的
值,您必须编写:

$_POST['query']['range'][0][0];
//for the upper:
$_POST['query']['range'][0][1];
那太乱了无论传递给
$.ajax
的是什么,jQuery都会为您正确格式化数据。我建议如下:

dataQuery = {
    range: {lower: range.lower, upper: range.upper},
    detail: { id: detail.id }
};

 $.ajax({
    type: "POST",
    //async: true, <== you can leave this out
    url: scope.fetchUrl,
    data: dataQuery
}).done(function( data ) {
    alert("success!");
});

您正在使用POST创建AJAX请求:

 $.ajax({
     type: "POST",
     //...
 });
然而,在PHP代码中,您使用了
$\u GET
变量:

$range = $_GET['query'];
$\u GET
更改为
$\u POST

您还使用了
$range
变量(例如在
urlencode($range['upper'])
),但是没有任何代码真正声明,更不用说初始化它了。这就是您看到的“未定义变量”通知的原因

最后,发送到PHP的数据如下所示:

$_POST['query']['range'] = array(
    array(range.lower, range.upper)//whatever these values may be
);
因此,要获得
范围。较低的
值,您必须编写:

$_POST['query']['range'][0][0];
//for the upper:
$_POST['query']['range'][0][1];
那太乱了无论传递给
$.ajax
的是什么,jQuery都会为您正确格式化数据。我建议如下:

dataQuery = {
    range: {lower: range.lower, upper: range.upper},
    detail: { id: detail.id }
};

 $.ajax({
    type: "POST",
    //async: true, <== you can leave this out
    url: scope.fetchUrl,
    data: dataQuery
}).done(function( data ) {
    alert("success!");
});

您正在使用POST创建AJAX请求:

 $.ajax({
     type: "POST",
     //...
 });
然而,在PHP代码中,您使用了
$\u GET
变量:

$range = $_GET['query'];
$\u GET
更改为
$\u POST

您还使用了
$range
变量(例如在
urlencode($range['upper'])
),但是没有任何代码真正声明,更不用说初始化它了。这就是您看到的“未定义变量”通知的原因

最后,发送到PHP的数据如下所示:

$_POST['query']['range'] = array(
    array(range.lower, range.upper)//whatever these values may be
);
因此,要获得
范围。较低的
值,您必须编写:

$_POST['query']['range'][0][0];
//for the upper:
$_POST['query']['range'][0][1];
那太乱了无论传递给
$.ajax
的是什么,jQuery都会为您正确格式化数据。我建议如下:

dataQuery = {
    range: {lower: range.lower, upper: range.upper},
    detail: { id: detail.id }
};

 $.ajax({
    type: "POST",
    //async: true, <== you can leave this out
    url: scope.fetchUrl,
    data: dataQuery
}).done(function( data ) {
    alert("success!");
});

您正在使用POST创建AJAX请求:

 $.ajax({
     type: "POST",
     //...
 });
然而,在PHP代码中,您使用了
$\u GET
变量:

$range = $_GET['query'];
$\u GET
更改为
$\u POST

您还使用了
$range
变量(例如在
urlencode($range['upper'])
),但是没有任何代码真正声明,更不用说初始化它了。这就是您看到的“未定义变量”通知的原因

最后,发送到PHP的数据如下所示:

$_POST['query']['range'] = array(
    array(range.lower, range.upper)//whatever these values may be
);
因此,要获得
范围。较低的
值,您必须编写:

$_POST['query']['range'][0][0];
//for the upper:
$_POST['query']['range'][0][1];
那太乱了无论传递给
$.ajax
的是什么,jQuery都会为您正确格式化数据。我建议如下:

dataQuery = {
    range: {lower: range.lower, upper: range.upper},
    detail: { id: detail.id }
};

 $.ajax({
    type: "POST",
    //async: true, <== you can leave this out
    url: scope.fetchUrl,
    data: dataQuery
}).done(function( data ) {
    alert("success!");
});


您是否在浏览器控制台中观看了请求/响应?您是否在浏览器控制台中观看了请求/响应?您是否在浏览器控制台中观看了请求/响应?您是否在浏览器控制台中观看了请求/响应?关于POST/GET,您说得对,谢谢。但是我对使用$range感到困惑,我如何访问从js传入的上下限值?@user2100620:更新我的答案,ATM,这是
$\u POST['query']['range'][0][0]
$\u POST['query']['range'][0][1]
,因为
dataQuery.range
声明为2D数组(
[[
我完全按照你说的做了,我仍然得到“未定义的变量:url中的下限/上限”当我尝试在api中使用$lower和$upper的值时call@user2100620:有了我在这里发布的代码,任何地方都不会有
$lower
$upper
了。设置一个粘贴库或要点之类的东西,这样我就可以真正看到你在做什么。JS和PHP代码都有,因为如果你做了我在这里发布的事情,事情应该会发生工作Javascript部分显然缺少了一些东西,因为还有很多其他的东西在进行,谢谢你。但是我对使用$range感到困惑,我如何访问从js传入的上下限值?@user2100620:更新我的答案,ATM,这是
$\u POST['query'['range'][0][0]
$\u POST['query']['range'][0][1]
,因为
dataQuery.range
被声明为一个2D数组(
[[[/code>我完全按照你说的做了,我仍然得到“未定义的变量:url中的上/下”当我尝试在api中使用$lower和$upper的值时call@user2100620:有了我在这里发布的代码,任何地方都不会有
$lower
$upper
了。设置一个粘贴库或要点之类的东西,这样我就可以真正看到你在做什么。JS和PHP代码都有,因为如果你做了我在这里发布的事情,事情应该会发生工作Javascript部分显然缺少了一些东西,因为还有很多其他的东西在进行,谢谢你。但是我对使用$range感到困惑,我如何访问从js传入的上下限值?@user2100620:更新我的答案,ATM,这是
$\u POST['query'['range'][0][0]
$\u POST['query']['range'][0][1]
,因为
dataQuery.range
被声明为一个2D数组(
[[[/code>我已经完全按照你说的做了,我仍然是