0

これはとても単純なはずですが、うまくいきません。私がやっていることは、古いアクションを取得し、最後に ID を追加し、それにフォーム アクションを設定することです。コードは次のとおりです。

var action = $('#update-schedule-form').attr('action');
$('#update-schedule-form').attr('action', action + '/1');

フォームのアクションが FireBug と Chrome のインスペクターで変更されていることがわかります。ただし、送信ボタンをクリックすると、元のアクションに送信されます。たとえば、コードでは「/controller/action/1」と表示されますが、「/controller/action」に送信されます。ここで何が起こっているのですか?

アップデート

私が使用しているフレームワーク Yii は、その ajax 検証ルーチンの元のフォーム アクション アドレスを格納していることがわかりました。Firebug でフォーム送信が表示されていませんでした。送信前にフォームを検証しようとしている検証が表示されていました。Yii が使用する URL をどこに保存しているか、またはそれを変更する方法がわかりません (フォーム アクションを使用する必要がありますが、明らかにそうではありません)。そのため、コントローラーを変更し、ID パラメーターをオプションにしました。これで、検証が正常に実行され、フォームが正しく送信されます。

4

2 に答える 2

2

propの代わりに使用してみてくださいattr

var action = $('#update-schedule-form').prop('action');
$('#update-schedule-form').prop('action', action + '/1');

.prop() と .attr()については、この回答を確認してください

于 2013-09-10T03:41:24.717 に答える
1

jQuery 経由でフォームを送信していますか、それとも HTML 送信ボタンを使用していますか? 別の送信方法を試してください。

また、この方法でアクションを更新してみてください。

var action = jQuery('#update-schedule-form').get(0).getAttribute("action");
jQuery('#update-schedule-form').get(0).setAttribute('action', action + '/1');  

編集:コードが配置されている場所かもしれませんが、エラーがない場合はわかりにくく、おそらく問題ではありません。

于 2013-09-10T04:13:12.017 に答える