[英]'post method not allowed' error while sending data to php with ajax
我想向PHP發送一些數據以更改MySQL數據庫中的某些內容,但我不斷收到此405錯誤“不允許使用POST方法”。 我在Google上搜索了很多,但是找不到任何有用的解決方案。 有人可以向我解釋我在做什么錯嗎?
我在HTML內使用Razor在網頁上呈現數據:
@foreach(var row in db.Query(getKamers))
{
<form id="@row.id" action='_DataConn.php' method='post' class='ajaxform'>
<input type="text" value="@row.id" name="id" id="td-id" />
<input type="text" value="@row.oppervlakte" name="oppervlakte" id="td-opp" />
<input type="text" value="@row.locatie" name="locatie" id="td-loc" />
<input type="text" value="@row.type" name="type" id="td-type" />
<input type="text" value="@row.kamernr" name="nummer" id="td-kamernr" />
<input type="text" value="@row.vrij" name="vrij" id="td-vrij" />
<input type="submit" value="opslaan" name="opslaan" id="@row.id" />
</form>
}
然后我有這個JavaScript文件:
$(document).ready(function () {
$('.ajaxform').submit(function () {
$.ajax({
url: $(this).attr('action'),
type: $(this).attr('method'),
dataType: 'json',
data: $(this).serialize(),
success: function (data) {
console.log(data);
}
});
return false;
});
});
和我的PHP看起來像這樣:
<?php
$dbhost = "localhost";
$dbuser = "root";
$dbpass = "root";
$dbname = "Studentenkamers";
//Connect to MySQL Server
mysql_connect($dbhost, $dbuser, $dbpass);
//Select Database
mysql_select_db($dbname) or die(mysql_error());
// Retrieve data from Query String
$id = $_POST['id'];
$oppervlakte = $_POST['oppervlakte'];
$locatie = $_POST['locatie'];
$kamernr = $_POST['nummer'];
$type = $_POST['type'];
$vrij = $_POST['vrij'];
echo 'ok'
// Escape User Input to help prevent SQL Injection
$id = mysql_real_escape_string($id);
$oppervlakte = mysql_real_escape_string($oppervlakte);
$locatie = mysql_real_escape_string($locatie);
$kamernr = mysql_real_escape_string($kamernr);
$type = mysql_real_escape_string($type);
$vrij = mysql_real_escape_string($vrij);
//build query
//"UPDATE Studentkamer SET oppervlakte='" + room[1] + "', locatie='" + room[2] + "', type='" + room[3] + "', vrij='" + room[4] + "' WHERE id='" + room[0] + "'";
$query = "UPDATE Studentkamer SET oppervlakte = '$id', locatie = '$locatie', type='$type', kamernr = '$kamernr', vrij = '$vrij' WHERE id='$id'";
//Execute query
$qry_result = mysql_query($query) or die(mysql_error());
?>
編輯:
下面是錯誤信息屏幕截圖的鏈接,它與靜態上下文有關嗎? http://img41.imageshack.us/img41/9139/errorde.jpg
我正在使用localhost在Webmatrix中工作,是否需要將該網站置於聯機狀態才能正常工作?
查看提交按鈕和表單ID。 剃刀將其轉換為有效的字符串嗎? 在我看來,id包含@
。 根據http://www.w3.org/TR/html4/types.html,id值中的@
不允許使用。 這可能作為包含這些字符的值傳遞
ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number
of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".").
嘗試
@(row.id)
您是否安裝了Firebug。請檢查那里的“ Ajax請求到底發生了什么”請求,並在此處添加確切的錯誤詳細信息。 因此,我可以為您提供幫助。
您必須在您的網絡服務器的配置中允許POST方法
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.