1

何が起こっているのか本当に言葉を失っているので、私はここで少し頭がおかしくなっています。いろいろと調べた結果、私はすべてをあるべき姿で行っていると信じています。

状況

ユーザー作成フォームを AJAX 経由でサーバーに送信しようとしていますが、codeIgniter はこの部分を通過することさえできません

if($this->input->post('blnAjax')) { // do something } サーバーからコンテンツをほとんど問題なくフェッチするため、AJAX 側をクライアントに組み込むことに成功しました。通話に含まれる詳細の一部を次に示します。

Ajax コード

ajaxコードは、この質問の範囲を超えたはるかに大きなフレームワークの一部ですが、実際の呼び出し機能に関しては、イベントはevent.preventDefault(); event.stopImmediatePropagation();実行を停止する必要があります. URL に到達可能であり、POST に設定されたリクエスト タイプで投稿値がシリアル化されている

requestpage: function(){
    var strURL = params.strBaseURL + params.strRequestURL;
    $.ajax({
        type: params.strRequestMethod,
        url: strURL,
        data: params.strRequestParameters,
        dataType: 'json',
        success: function(json) {
            methods.postrequestprocedure(json);
        }  
    });
},

Ajax リクエスト

クライアント上ですべてがスムーズに実行され、期待どおりに JSON を含む XMLHttpRequest が返されます。ただし、フォームが送信されたときに、この時点に到達することさえありません。AJAXを使用している場合、Codeigniterはフォームが設​​定されているとは決して考えません

Parameters application/x-www-form-urlencoded
blnAjax 1
user_login_name[]   fred
user_login_name[]   ted
user_name[] Fred Flintstone
user_name[] Ted bear
usergroup_id[]  16
usergroup_id[]  16

コントローラ

コントローラーでは、アクションに関しては、失敗するまでのすべてのコードを含めました。コードの他の側面をテストしたところ、問題なく動作することに注意してください

public function user_add() {
/* Include extra script files needed for form handling */
$this->view['aryScript'][] = 'jquery.validate.min';
$this->view['aryScript'][] = 'jquery.validate.additional-methods';

/* Include extra CSS files */
$this->view['aryCSS'][] = 'form';
/* First check if the user has correct access rights */
if($this->view['intAccessLevel'] < INT_SUPER_USER_ACCESS_LEVEL) {
    $aryResponse['notifications'][] = array('strType' => 'permanent',
                                        'strMessage' => 'Denied!');
}

/* Import extra libraries and helpers */
$this->load->library(array('PasswordHash'));
$this->load->model('UserAdminModel');

$this->view['strTitle'] = 'Add User';
$this->view['aryButtons']['user_add_another'] = array(
     'strDisplay' => $this->lang->line('user_add_another')
     'strURL' => '#',
     'strID' => 'user_add_another',
     'aryData' => array('action' => 'form-clone')
);

if($this->input->post('blnAjax')) {
    echo 'Big sigh of relief';

私の問題を読んでくれてありがとう

4

1 に答える 1

0

答えは見かけほど単純ではありません。私のクライアントは、URI を書き換える CodeIgniter mod を使用しているため、ajax クエリから渡されたデータをダンプしています。取得および「実際の」POST クエリを実行するときは問題ありませんでした。

そのため、 Wiredesignz - 言語識別子を使用している場合は、クエリに影響を与える可能性があることに注意してください

どのように修正したか、カスタム ページ コントローラーを使用しますが、理論は同じです。

  • $this->config->item('language_abbr');おそらく定数を介してJavaScript関数を使用できることを確認するか、同じページにある場合はJavaScriptに直接エコーしてください
  • 次のようなもので送信する前に、URL を変更します。params.strBaseURL + params.strLanguage + '/' + params.strRequestURL;

これで、問題なく動作することがわかるはずです。これがお役に立てば幸いです。他の誰もこれを見つけるためにミニエタニティを費やす必要はありません

于 2012-12-04T19:26:16.853 に答える