注意:我最终发现问题是由控制器本身的语法错误引起的。
好的,我正在使用Laravel开发平台。 我有一个允许用户注册域名的表单。此表单通过ajax提交到“[my domain] / thedomains / create”。这是代码:
$("#btn_doms_create_submit").click(function (){
$.ajax({
type: 'GET',
url: "/thedomains/create",
data: { _token : $("input[name=\"_token\"]").val(),
domain : $("input[name=\"create_dom\"]").val(),
field_ip : $("input[name=\"create_ip\"]").val(),
obs : $("textarea[name=\"create_obs\"]").val(),
active : $("input[name=\"create_active\"]").is(":checked")+"",
itld : $("input[name=\"create_itld\"]").is(":checked")+"" },
dataType: 'json',//returned data
success: function(data){
if (data["errors"] == "")
{
toastr.success(data.message);
$("#doms_create").modal("hide");
updateTable();
}
else
{
var txtError = "";
for (error in data.errors) {
txtError += "<li>" + data.errors[error] + "</li>";
}
toastr.warning(data.message + "<ul>" + txtError + "</ul>");
if (data.errors.domain != null) {
$("#div_create_dom").attr("class","form-group has-error");
}
if (data.errors.field_ip != null) {
$("#div_create_ip").attr("class","form-group has-error");
}
}
}
});
});
“/ thedomains / create”背后的代码是
public function create(Request $request) {
$return_val = [ "message" => trans("system.dom_succ", ["name" => $request->dom]),
"errors" => "" ];
$validator = Validator::make($request->all(), [
"domain" => "required|max:255|url",
"field_ip" => "max:255"
],[
"domain.required" => trans("system.val_dom_required"),
"domain.max" => trans("system.val_dom_max"),
"domain.url" => trans("system.val_dom_url")
]);
if (!$validator->fails()) {
$dom = new Doms;
$dom->name = $request->domain;
$dom->ip = $request->ip;
$dom->obs = $request->obs;
if ($request->active == "true")
$dom->status = true;
else
$dom->status = false;
if ($request->itld == "true")
$dom->is_top_level_domain = true;
else
$dom->is_top_level_domain = false;
} else {
$return_val["message"] = trans("system.note_errors");
$return_val["errors"] = $validator->errors();
}
return json_encode($return_val);
}
正如您所看到的,我根据所需的标准验证了所有必需的数据是否存在且有效。 问题是:当我提交此表单时包含一些无效域或根本没有域名时,验证会自然发生,返回给出等等。但是当我有一个有效的域时,验证通过浏览器上的以下错误( chrome)控制台:
获取[我的域名] /thedomains/create?_token=2vsOrtkcWGid5Ex2HegtY3Fw2E...aE&domain=http%3A%2F%2Ftecnosece.com&field_ip=&obs=&active=true&itld=false 403(禁止)
Idk为什么会这样。我已经改变了从“域名”到“域名”的路线,认为我的主机可能存在某种阻塞,但这并没有解决问题。 知道发生了什么事吗?
编辑:
根据要求,这是“/ thedomains”的路线部分:
Route::group(['prefix' => 'thedomains'], function () {
Route::get("/",function () {
return view("doms");
});
Route::get("/all", "DomsController@getAll");
Route::post("/get", "DomsController@get");
Route::get("/create", "DomsController@create");
Route::post("/edit", "DomsController@edit");
Route::post("/del", "DomsController@del");
Route::get("/search", "DomsController@search");
Route::post("/migrate", "DomsController@migrate");
});