2011-07-28 2 views
0

私はOO PHPを始めて、最初のクラスを作成しました。それは動作しますが、少し整理したいと思います。AJAXは、外部のページではなく内部のPHP関数から結果を得ることができますか?

今、クラスの要素は、ドキュメントの先頭に宣言されているajax関数を呼び出します。

私はクラスを適切な頭に依存させたくないので、自己完結型にするために、スクリプト関数をクラスファイルに移動しました。私はこれがノーではないかどうかについての情報を見つけることができませんでした。なぜなら、「どうしてJavaScriptクラスの悪いフォームにjavascript/ajaxを入れているのですか?しかし、それが受け入れられる習慣であるならば、私はより厄介な質問をします。

AJAXはPHPページを呼び出し、結果はページのクラスオブジェクトの多くを埋め込みます。しかし、私はそれが外部のPHPファイルにも依存していなかった場合、クラスが良いと判断します。そこで、ファイルをクラスファイル上の関数に移動しました。ここでトリッキーなビットです。

外部ページの代わりにAJAX呼び出しと同じファイルにある関数からAJAXの結果を取得するにはどうすればよいですか?

ここまでのAJAXコードです。 var urlは現在、目的の内部PHP関数ではなく、2つの可能なPHPページのいずれかへのパスです。 var destは、クラスオブジェクト内で結果が終わるところです。

function createRequestObject() { 
var ro; 
var browser = navigator.appName; 
if(browser == "Microsoft Internet Explorer"){ 
    ro = new ActiveXObject("Microsoft.XMLHTTP"); 
}else{ 
    ro = new XMLHttpRequest(); 
} 
return ro; 
} 
var http = createRequestObject(); 

function sndReq(url,dest) { 
http.open('get',url); 

http.onreadystatechange = function() { 
    if (http.readyState == 4) { 
     if (http.status == 200) { 
      var responce = http.responseText; 
      document.getElementById(dest).innerHTML = responce; 
     } 
    } 
}; 

http.send(null); 
} 

答えて

0

xml-rpcやjson-rcpのような音が聞こえてきます。これにより、サーバー側のコードを動的に実行して結果を得ることができます。

例JavaScriptのRPCライブラリ:http://barracudaserver.com/doc/WebServices/JRpcDoc.html

はしかし、私は単純にパラメータを渡すことは、あなたが何をしたいと思います。最も簡単な方法は、グローバル変数$_GET

if(isset($_GET["cmd"]) && $_GET["cmd"] == "find_user"){ 
    $user_id = $_GET["user_id"]; 
    //some server-side stuff  
    echo results; 
} 
+0

のおかげで、これらのパラメータのためのPHPのチェックに

http://www.site.com/ajax.php?cmd=find_user&user_id=12 

その後、URLで取得するパラメータを渡すことです。私はそれをクラスファイルの先頭に置き、exit()を追加しました。結果をエコーし​​た後、残りのクラスはAJAX呼び出しに含まれませんでした。今すぐすべての自己が含まれて:)再びありがとう! – lcHatter

関連する問題