我正在尝试使用AJAX将jQuery变量传递给PHP但它似乎没有传递。出于测试目的,我有以下内容:
JQUERY:
var runin_pickup = 1200;
// Send to our checkRuninTariff function
checkRuninTariff(runin_pickup);
`
function checkRuninTariff(runin_pickup) {
$.ajax({
// Request sent from control panel, so send to cp.request.php (which is the handler)
url: 'scripts/php/bootstrp/all.request.php',
type: 'POST',
// Build data array - look at the '$_REQUEST' parameters in the 'insert' function
data: 'fnme=runIn&field_runin_p='+runin_pickup,
dataType: 'text',
timeout: 20000,
error: function(){
alert("There was a problem...")
},
success: function(){
alert(runin_pickup+' passed successfully')
}
});
}
这会传递给all.request.php:
<?php
include('../../../deployment.php');
require_once('controllers/xml.controller.php');
require_once('controllers/tariff.fare.controller.php');
require_once('controllers/datagrid.controller.php');
require_once('controllers/get.bookings.php');
// Switch to determine method to call
switch ($_REQUEST['fnme']) {
case 'runIn':
header('Content-type: text/html');
echo TariffFareController::getFare($_REQUEST['field_runin_p']);
break;
case 'g_fare':
header('Content-type: text/html');
echo TariffFareController::fareRequestHandler($_REQUEST['v_sys'],$_REQUEST['j_dis'],$_REQUEST['pc_arr'],
$_REQUEST['leg_arr'],$_REQUEST['return_j'],$_REQUEST['j_date'],$_REQUEST['j_time'],
$_REQUEST['r_date'],$_REQUEST['r_time'],$_REQUEST['wait_return_j']);
break;
}
最后到了关税.fare.controller.php:
public static function getFare($int_terminate,$fieldPickup) {
if($fieldPickup > 1100) {
$fare = 222.00;
}
else {
$fare = 111.00;
}
}
在firebug控制台中,我可以看到field_runin_p = 1200
但是,如果我做一个var_dump($ fieldPickup);它应为1200
时为NULL。任何想法为什么这不起作用?
非常感谢任何帮助!
答案 0 :(得分:1)
你的功能需要两个参数:
getFare($int_terminate, $fieldPickup)
但是,您的代码只传递一个(并且它与您期望的var不匹配):
echo TariffFareController::getFare($_REQUEST['field_runin_p']);
答案 1 :(得分:0)
您正在尝试从您的PHP发送html - header('Content-type: text/html');
但是您告诉您的javascript需要明文 - dataType: 'text',
改为使用header('Content-type: text/plain');
。
其他海报指出了你的剧本的其他问题。
我还建议不要使用$_REQUEST
,因为你的数据可能来自GET或POST参数,你不会知道哪个。