0

私のプロジェクトでは、フォームを処理するために ajax を使用しています。今、私はポストデータを処理したいと思っています。Jquery が許可されていない場合は、Javascript を使用します。しかし、Ajax はページ全体を返します。どうすれば修正できますか。

私のコントローラー:

class Form extends Controller {

    function __construct() {
        parent :: __construct();
        $this->load->model('Form_model');
    }

    function index() {
       $this->loadForm();

    }

    function loadForm() {
        $this->load->view('form_view');
    }

    function ajax_add_form_content() {

        if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] == "XMLHttpRequest") {
            echo $_POST['fullname'] . '+' . $_POST['subject'];
        } else {
            echo '0';
        }
    }

}

そして私の見解:

<html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Form view</title>

    <script language="JavaScript" type="text/javascript">


        function ajax_post(){

            var hr = new XMLHttpRequest();

            var url = "<?php echo base_url().'index.php/form/ajax_add_form_content'?>";
            var fn = document.getElementById("txtFullName").value;
            var ln = document.getElementById("txtSubject").value;
            var vars = "fullname="+fn+"&subject="+ln;
            hr.open("POST", url, true);

            hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

            hr.onreadystatechange = function() {
                if(hr.readyState == 4 && hr.status == 200) {
                    var return_data = hr.responseText;
                    document.getElementById("status").innerHTML = return_data;
                }
            }

            hr.send(vars); 
            document.getElementById("status").innerHTML = "processing...";
            return false;
        }

    </script>

</head>
<body>
    <div id="form">
        <span id='status' ></span>
        <form class="form" method="post">
            <p class="formName">contact</p>
            <p class="formDesc">contact us</p>
            <div class="form_elements">
                <div class="textField">
                    <label>Full name</label>
                    <input id="txtFullName" class="inputText required" type="text" maxlength="255" size="28" name="txtFullName">


                </div>

                <div class="textField">
                    <label>Subject</label>
                    <input id="txtSubject" class="inputText required" type="text" maxlength="255" size="28" name="txtSubject">


                </div>

            </div>
            <div class="form_submit">
                <input id="btnSubmit" type="submit" value="Send" name="btnSubmit" onClick="javascript:ajax_post();">
            </div>
        </form>
        <div id='display'>
        </div>

    </div>
</div>
</body>
</html>

助けてくれてありがとう!

4

2 に答える 2

0

これを試してみてください

コントローラーで

function ajax_add_form_content() {

        if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] == "XMLHttpRequest") {
            echo $_POST['fullname'] . '+' . $_POST['subject'];
        } else {
            echo '0';
        }
  exit;
    }
于 2012-11-01T09:26:12.487 に答える
0

Chrome インスペクタなどを使用して、適切な URL にリクエストを送信しているかどうかを確認することをお勧めします。

さらに、変数を使用する代わりに$_SERVER、CI ライブラリのメソッドを使用できます$this->input->is_ajax_request()

于 2012-11-01T09:57:21.930 に答える