0

MySQL データベースの何かを変更するためにデータを php に送信したいのですが、この 405 エラー「POST メソッドは許可されていません」が発生し続けます。私はたくさんグーグルで検索しましたが、有用な解決策が見つかりません。誰かが私が間違っていることを説明できますか?

HTML内でRazorを使用して、Webページにデータをレンダリングしています:

@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 で作業していますが、この Web サイトをオンラインにする必要がありますか?

4

2 に答える 2

1

送信ボタンとフォーム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)

リファレンス - MVC3 Razor 構文。この ASP.NET スタイルを Razor に変換するにはどうすればよいですか? (引用符内の @ にも問題があります)

于 2012-09-14T13:36:13.490 に答える
0

Web サーバーの設定で POST メソッドを許可する必要があります

于 2012-09-14T13:34:56.863 に答える