0

モデル内の関数から返されたデータベースクエリに基づいて、いくつかのhtml要素を動的に生成するcodeigniterアプリケーションを使用しています。

私のビューの1つでは、XMLHttpRequestを使用して、コントローラーの1つでphp関数を呼び出します。この関数は、モデルから文字列の形式でデータを取得し、それをresponseTextにエコーします。私のJavaScriptコードは次のようになります。

var xmlHttp = new XMLHttpRequest();
xmlHttp.open("POST", "/controller/my_function", true);
var postStr = "name="+proposalName+"&data="+data;
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlHttp.send(postStr);
var response = xmlHttp.responseText;

呼び出された関数は次のようになります。

public function my_function(){
$data['name'] = $this->input->post('name');
$data['data'] = $this->input->post('data');
$string = $this->my_model->my_model_function($data);
echo $string;
}

モデルは文字列を正しく返し、関数で乱数または文字列をエコーし​​た後でも、応答テキストから何も取得しませんでした。関数に何をエコーし​​ようとしても、応答テキストには何も表示されません。私はここで何が間違っているのですか?php関数から正しい値を取得するためにresponseTextを取得するにはどうすればよいですか?

編集:postStr変数のコピーの問題を修正しました

4

2 に答える 2

3
var post Str = "name="+proposalName+"&data="+data;

これは構文エラーです。JavaScriptは、ヒットするとフォールオーバーしますStr。HTTPリクエストは送信されません。

送信された場合でも、非同期リクエスト(の3番目の引数opentrue)を作成しているため、応答が受信されるまでページ全体がロックされません。xmlHttp.responseTextあなたはそれが応答によって設定される前に読んでいたでしょう。

関数が必要ですonreadystatechange

例があるXMLHttpRequestのMDNドキュメントを参照してください。

于 2012-08-31T19:17:16.393 に答える
2

いくつかの主要な問題:

1)Javascriptが無効です。

var post Str = "name="+proposalName+"&data="+data;

post Strスペースがあります。このコードは関係なく実行されません。

2)あなたは本当に使い方を読む必要がありますXMLHttpRequest

これを読んでください、それは役立つはずです: http ://www.jibbering.com/2002/4/httprequest.html

于 2012-08-31T19:20:21.440 に答える