【发布时间】:2023-12-17 21:34:01
【问题描述】:
我想通过 Ajax 将数据从简单的 HTML 表单传递到控制器,然后处理数据并返回响应。
目前我有以下内容:
HomePage.ss
<form method="POST" class="form-horizontal submit-form" onsubmit="return checkform(this);">
<!-- Text input-->
<div class="form-group">
<label class="col-md-4 control-label" for="name">Name</label>
<div class="col-md-8">
<input id="name" name="name" type="text" placeholder="insert full Name" class="form-control input-md" required="" />
</div>
</div>
<!-- Button -->
<div class="form-group">
<label class="col-md-4 control-label" for="send-btn"></label>
<div class="col-md-8">
<button id="send-btn" name="send-btn" class="btn btn-primary">Submit</button>
</div>
</div>
</form>
JavaScript
$('form.submit-form').submit(function() {
$.ajax({
type: 'POST',
url: 'processForm',
data: $(this).serialize(),
success: function(data) {
alert('data received');
}
});
});
HomePage.php
class HomePage_Controller extends Page_Controller {
public function events() {
$events = CalendarEvent::get();
return $events;
}
public function processForm() {
if (Director::is_ajax()) {
echo 'ajax received';
} else {
//return $this->httpError(404);
return 'not ajax';
}
}
}
在开发人员工具中,我可以看到我得到了带有 404 not found 错误的 xhr processForm。
如何让这个 Ajax 表单与 SilverStripe 控制器一起正常工作?
【问题讨论】:
-
Spidey,有几件事可能是问题所在: - 需要在控制器中为您的方法指定 $allowed_actions - 可能需要在 SilverStripe 中执行表单以获取 SecurityToken,但我' m 不是 100% 开启
-
我同意 :) 一个简单而完整的示例对我和处于相同情况的任何人来说都很棒。
标签: javascript php jquery ajax silverstripe