2012-03-03 14 views
0
<a href="#" onclick="return purchaseEntry('39873');">ABC</a> 

私は、Webページにクロールし、regexを使用して特定のコンテンツを取得する予定です。ただし、このコンテンツはonclickが有効化された後にのみ表示されます。私はABCに入り、コンテンツを取り出す必要があります。私はfile_get_content()を使用することはできませんリンクがないので、私はABCのページに私を連れて行く。ユーザーがクリックするとABCコンテンツが表示されます。結果はJavascript/Ajax/Jsonを介して呼び出されます。PHPで「onclick」を実行

ABCの内容は以下のとおりです。

Name: XXXX 
Address: XXXXXX 

ABCにクロールしてコンテンツを取得する方法任意のアイデア?

注:リモートページにクロールしてABCコンテンツを取得するPHPスクリプトを作成する必要があります。

追加情報:

function getExistingDetails(customerid, existingdetails) { 
    e1 = $(existingdetails); 
    e1.innerHTML = 'Loading ... <img src="/jpg/ajaxloader.gif" />'; 

    var url = '/samex/index.php'; 
    var pars = 'option=com_directory&view=entry2&customerid=' + customerid + '&format=raw'; 
    new Ajax.Request(url, { method: 'get', parameters: pars, 
     onSuccess: function(request) { 
      var json = request.responseText.evalJSON(); 
      jsondata = json['data']; 
      e1 = $(existingdetails); 
      e1.innerHTML = jsondata['clientdata']; 
     }, 
     onFailure: function(request) { 
      e1 = $(existingdetails); 
      e1.innerHTML = 'Unable to get information for customer ' + customerid; 
     } 
     }); 
} 

任意の提案:

function purchaseEntry(customerid) { 
    $('customeridfield').value = customerid; 
    if (approvedAgents()) { 
     e1 = $('entrylisttable'); 
     e1.hide(); 
     getExistingDetails(customerid, 'confirmstatusexistingdetails'); 
     $('confirmstatushajjlicenceno').value = ''; 
     $('confirmstatusapproved').checked = false; 
     e1 = $('confirmstatus'); 
     e1.show(); 
    } 

    return false; 
} 

もここgetExistingDetailsのですか?

+0

ここでは、これを表示するpurchaseEntry()のjsコードを提供していますか? – sandeep

+2

javascriptとphpは異なる環境で動作します。それらの間の唯一の可能な相互作用はAJAXです –

+0

私はあなたが何を意味するかを確信していません - あなたは基本的にリモートページからこの関数名(と値)を引き出し、それを実行しますか? – BenOfTheNorth

答えて

2

PHPからJavaScriptイベントを実行することはできません。 PHPはサーバー側の言語ですが、HTMLとJavaScriptはクライアント側の言語です。

あなたは、クライアント側のHTMLからデータを取得することができますし、JavaScriptは、以下のいずれかの方法を使用することです唯一の方法:

は戻ってサーバーにデータを送信するアクションでHTMLフォームを使用します。

<form action="/submit.php"> 
    <input name="purchaseEntry" value="39873" /> 
    <input type="submit" value="Submit" /> 
</form> 

AJAX呼び出しを使用して、ページをリロードせずにサーバーにデータを送信します。

// jQuery ajax 
$.ajax({"url" : "/submit.php", 
     "type" : "post", 
     "data" : "purchaseEntry=" + document.getElementById("purchase-entry") 
     "success" : function() { 
      alert("data sent to server"); 
     } 
); 

ユーザーが別のページに移動したときに$ _REQUESTオブジェクトからデータをプルします。これはあなたのデータがリンク内にあることを前提としています。

<p><a href="/page2.php?purchaseEntry=39873">Page 2</a></p> 
+0

私の質問....と言い換えた – user311509

+0

ほとんどのクローラは、DHTMLを読むことができなくなるだろう)。一般的に、クローラはRAW HTMLのみを表示します。しかし、UIを完全にバイパスして、リモートページのリンクをクリックしたときに呼び出されるURLを把握することができます。リモートサーバーがパディング付きのJSONを返さないかぎり、ドメイン間の制限を避けるためにサーバーからフェッチする必要があります。 – jmort253

+0

クイックメッセージ:Firebugを使用した後、私は必要なすべてのコンテンツがe1.innerHTML = jsondata ['clientdata']に存在することを発見しました。 ... – user311509

2

purchaseEntry('39873')にはphpファイルにajax callを含めることができます。

あなたはphpファイルは、その後、あなたのajax呼び出しがphpから受信json stringからJavascriptをarray/objectにそれを再変換することができますecho json_encode($yourArray)

を使用してarrayから変換jsonで応答することができます。

+0

私の質問を言い換え... – user311509

関連する問題