使用AJAX将变量从Javascript传递到PHP
我试图将变量从Javascript文件传递到PHP文件。 从我的js文件:使用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
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>我已经完全按照你说的做了,我仍然是