В настоящее время я пытаюсь сделать AJAX-запрос на тип публикации формы, но скрипт синтаксического анализа PHP, на который я пытаюсь отправить данные, возвращает ошибку 404, которую я вижу через инструменты разработчика Chrome. Вот мой код:
<script type="text/javascript">
function ajax_post(){
var hr = new XMLHttpRequest();
var url = "/products/parse.blade.php";
var productName = document.getElementById("productName").value;
var quantityInStock = document.getElementById("quantityInStock").value;
var pricePerItem = document.getElementById("pricePerItem").value;
var totalValueNumber = quantityInStock * pricePerItem;
var route = "productName="+productName;
hr.open("POST", url, true);
hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
hr.onreadystatechange = function() {
if(hr.readyState == 4 && hr.status == 200) {
var return_data = hr.responseText;
document.getElementById("status").innerHTML = return_data;
}
}
hr.send(route);
document.getElementById("status").innerHTML = "processing...";
}
</script>
<div class="container-fluid form-container">
<div class="row">
<div class="col-lg-3 col-md-12">
<div class="form-group">
<input type="text" name="productName" id="productName" placeholder="Product Name" class="form-control" required>
</div>
<div class="form-group">
<input type="number" name="quantityInStock" id="quantityInStock" placeholder="Quantity in Stock" class="form-control" required>
</div>
<div class="form-group">
<input type="number" step="0.01" name="pricePerItem" id="pricePerItem" placeholder="Price per Item" class="form-control" required>
</div>
<input type="submit" value="Create Product Listing" class="btn btn-primary" onclick="ajax_post();">
<hr>
<div id="status"></div>
</div>
</div>
</div>
Я использую Laravel, и оба вида products.create
и файл, который я пытаюсь использовать для анализа данных, products.parse
находятся в каталоге products
моей папки представлений. Но, когда я пытаюсь отправить, все, что я получаю, это ответ «обработка» в статусе div и ошибка 404 для маршрута mydevsite.dev/products/parse
в консоли разработчика Chrome.
Я подумал, что мне нужно определить маршрут, поэтому я добавил:
Route::post('/products/parse', 'ProductController@parse');
Что возвращает
return view('products.parse');
Но это просто меняет мою ошибку на 419. Я думаю, что это как-то связано с полем CSRF, но я не уверен, как включить это, потому что мой HTML не является формой, а просто имеет элементы формы , Почему мой маршрут возвращает ошибку 404 или 419 и как я могу это исправить?