我正在尝试为SilverStripe网站构建一个自定义电子邮件表单,该站点包含jQuery,HTML,PHP和SilverStripe API,并且一直坚持尝试将表单字段传递到服务器端。而且,请不要为表单插件提供任何建议-表单是按原样设置的,我不会花很多时间来重做它。
以下是获取表单数据并将其发送到服务器的功能:
function ajax_script() {
var form_data = {
firstname: SchFirstName.val(),
lastname: SchLastName.val(),
useremail: SchEmail.val(),
birthday: SchBirthday.val(),
phone: SchPhone.val(),
servicereq: SchService.val(),
location: SchLocation.val(),
doctor: SchDoctor.val(),
calltime: SchTime.val()
};
$.ajax({
type: "POST",
url: "/home/ScheduleAppointment",
data: form_data,
success: function(response) {
console.log(response);
}
});
}
这是Page.php控制器中的ScheduleAppointment函数:
public function ScheduleAppointment() {
$fname = $this->getRequest()->param('firstname');
$lname = $this->getRequest()->param('lastname');
$birthday= $this->getRequest()->param('birthday');
$useremail= $this->getRequest()->param('useremail');
$phone = $this->getRequest()->param('phone');
$servicereq = $this->getRequest()->param('servicereq');
$location = $this->getRequest()->param('location');
$doctor = $this->getRequest()->param('doctor');
$calltime = $this->getRequest()->param('calltime');
$from = '[hidden]';
$to = '[hidden]';
$subject = 'Appointment Request Submission';
$body = "First Name: ".$fname."\r\n"."Last Name: ".$lname."\r\n"."Date of Birth: ".$birthday."\r\n"."Phone Number: ".$phone."\r\n"."Email: ".$useremail."\r\n"."Best Time to Call: ".$calltime."\r\n"."Location/Hospital: ".$location."\r\n"."Physician: ".$doctor."\r\n"."Service Requested: ".$servicereq."\r\n" ";
$email = new Email($from, $to, $subject, $body);
$email->replyTo($useremail);
$email->send();
}
我已经尝试调试表单,并且可以看到所有变量都是null
($fname
,$lname
,$birthday
等),所以有些不对劲。 jQuery.ajax
功能有问题或this->getRequest()->param()
设置正确。
如果有人对如何解决此问题有任何建议,我将不胜感激。我已经努力解决了几个小时的问题,而现在我很困惑。
参考方案
正如史蒂夫在评论中指出的那样:
$this->request->param('foo');
是错的。用于从URL参数中获取内容,例如$ Action,$ ID或您在路由或$url_handlers
(see docs)中定义的任何内容
要获取POST变量,您需要致电:
$this->request->postVar('foo');
要同时获取POST或GET变量,您可以调用:
$this->request->requestVar('foo');
See docs
jQuery Ajax加载仅适用于单个单词变量 - php在我的PHP文件中,我将一些变量从输入框传递到链接中,该链接通过jQuery的ajax load函数在其URL中使用该变量加载页面。整个系统运行良好,但仅适用于单字变量。每当涉及到空格时,我的Ajax通话都会中断。我假设这是一个编码问题,但是我也有一些疑问。基本上,它归结为我的PHP文件中的这一行代码,这导致了混乱。是否有可能找出格式是否正确,或者为什么在多…
jQuery .ajax将整个JavaScript数组传递给PHP - phptdata = new Array(); tdata['id'] = "helloid"; tdata['name'] = "helloname"; tdata['location'] = "hellolocation"; tdata[…
使用PHP变量将多个参数传递给AJAX JQuery - php我试图将2个值传递给AJAX JQuery函数。我的函数是由下拉列表的onChange触发的,该列表从数据库获取数据并通过while循环运行,并使用PHP输出,如下所示:$dropDown = "<label for='drop_down_list'>Drop Down: </label> <sel…
jQuery-找不到Ajax网址 - php好的,我敢肯定这确实很容易,而且我很愚蠢,但是似乎并不能深入了解它。我试图从我的js文件“ custom.js”中对“ helpers.php”中的某些代码进行简单的AJAX调用。但是,我仍然收到404错误,因为我似乎并没有正确遍历文件夹,尽管我确信我正在...我的文件夹结构如下:html index.php js/ custom.js includes h…
jQuery AJAX不向PHP发送多个提交按钮 - php所以我的问题是,当我将表单提交到PHP时,使用jQuery通过AJAX提交表单时,使用jQuery AJAX时哪个按钮提交表单并不重要,但是当使用表单操作时,表单会提交并让我知道删除还是删除按下了更新按钮。例如,这是提交表单的HTML<input type="submit" name="update" value…