0
ノックアウトjsクリックバインディングを使用してボタンをクリックすると、ajaxポストメソッドを介してユーザーフォームを送信しようとしています。受信エラー403 - 禁止されています。CSRFとajaxフォームは、ノックアウトjsクリックバインディングを使用してコードネイター3で送信されます。 - 禁止されたエラー
CSRFとは関係がありますが、それを把握することはできません。
View.php:ボタンをクリックするだけで
<?php echo form_open('client/search_client_database', ['role' => 'form']); ?>
<fieldset>
<div class="form-group">
<label class="sr-only" for="search_client_input">Search for existing clients</label>
<div class="input-group">
<input class="form-control input-sm" type="text" id="search_client_input" name="search_client_input" placeholder="Search for existing clients...">
<span class="input-group-btn">
<button class="btn btn-primary btn-sm" type="button" data-bind="click: search_client">Search</button>
</span>
</div>
</div>
</fieldset>
<?php echo form_close(); ?>
、ノックアウトのJSクリック結合は、コントローラへのAJAX呼び出しを開始することtriggedされます。ノックアウトjsコードは別のjsファイルにあり、ビューと共にロードされます。
Client.jsファイル:
var base_url = window.location.origin;
var url = base_url+"/client/";
this.search_client = function()
{
crsf = $("input[name=csrf_test_name]").val();
dataString = $("#search_client_input").val();
alert(crsf);
$.ajax({
url: url+"search_client_database",
type: "post",
cache: false,
data: {crsf: crsf, data: dataString},
success: function(customer_details) {
alert(customer_details);
},
error: function(xhr, ajaxOptions, thrownError)
{
alert(xhr.status);
alert(thrownError);
}
});
}
はコントローラー:
public function search_client_database()
{
$data = $this->input->post('data');
echo $data;
}
私はすなわち禁止XHRエラー403を取得しておきます。 URLに間違いはありません。
:あなたのAjaxリクエストに
data
でそれを使用する必要があるので、それは、csrf_test_name
と呼ばれ、あなたのコードに基づいて、あなたの場合は'$ config ['csrf_token_name']'で設定されています。ですから、 'data:{" csrf_test_name ":crsf、data:dataString}、' – nemesv