2017-09-28 2 views
0

私は2つのページを1つ持っています.Webフックはデータを受信した後にデータを送信します。このデータをaqの理由で他のページに送信します。 PHPWebフックで何らかのイベントが送信されたときにAjaxが呼び出さない

workflow.php

<? 
$cmd = 'echo "hii3" > debug2.log'; 
echo "<pre>".shell_exec($cmd)."</pre>"; 
$cmd1 = 'echo '.$_POST['action'].' >> debug2.log'; 
echo "<pre>".shell_exec($cmd1)."</pre>"; 
$cmd2 = 'echo ' .$_POST['id'].' >> debug2.log'; 
echo "<pre>".shell_exec($cmd2)."</pre>"; 
$id=$_POST['id']; 
?> 
<script type="text/javascript" 
src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"> 
</script> 
<script type="text/javascript"> 
$(
function() { 


var id= '<?php echo $id ;?>'; 
$.ajax({ 
    url: "http://35.160.133.54/bitrix/aq.php", 
        dataType: "json", 
        type: "POST", 
        data: {id : id}, 
        success: function(data){ 


             } 
        }); 




}); 
</script> 
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?> 

私はその後、workflow.php手動で実行すると

<? 
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php"); 
$APPLICATION->SetTitle("AQ"); 

if($_POST) 
{ 
$cmd = "echo ".$_POST['id']." > debug5.log"; 
echo "<pre>".shell_exec($cmd)."</pre>"; 
} 

?><?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?> 

aq.phpその実行ウェブフックがためにいくつかのデータを送信aq.php file.But workflow.phpそのaq.phを実行しないp

+0

[ブラウザの開発ツールでAJAXリクエスト/レスポンスを見たことがありますか?プロジェクトにjQueryライブラリを含めましたか?エラーが報告されていますか?あなたはWebサーバーでこれを実行していますか?](http://jayblanchard.net/basics_of_jquery_ajax.html) –

+0

データはworkflow.phpに送信されるので、どのようにAjaxレスポンスが表示されるかは、私のコードは別のサーバーにあります。 – Sanj

+1

ブラウザの開発者ツールを使用してください。 –

答えて

1

ウェブフックはブラウザではありません。ブラウザがJavaScript(Ajaxコール)を実行しているため、ブラウザでこれまでどおりに動作します。ウェブのフックだけ(GET/POST)の要求をして、これまでに何を返すは実行されません! これを解決したい場合は、別の方法を見つける必要があります。

たとえば、実行するサーバに特権がある場合は、curlを使用して、Ajaxリクエストをシミュレートできます。

'curl -i -H "Accept: application/json" -d "id":' . $id .' http://35.160.133.54/bitrix/aq.php' 

それとも、PHPのバージョンを使用します。

<?php                
    $data_string = json_encode(array("id" => $id)); 
    $curl = curl_init(); 
    curl_setopt ($curl, CURLOPT_URL, "http://35.160.133.54/bitrix/aq.php"); 
    curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST"); 
    curl_setopt($curl, CURLOPT_POSTFIELDS, $data_string); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($curl, CURLOPT_HTTPHEADER, array(
     'Content-Type: application/json', 
     'Content-Length: ' . strlen($data_string)) 
    ); 
    curl_exec ($curl); 
    curl_close ($curl); 
+0

あなたの答えに感謝します。自分のコードをデバッグするときにrequire($ _ SERVER ["DOCUMENT_ROOT"]。 "/ bitrix/header.php";私のコードは実行されていませんが、このファイルはlocation.pleaseを提示する必要があります – Sanj

+0

私はこのコードを手動で実行すると、必要なファイルでコードが実行されていますが、実行されていません。 – Sanj

+0

これをチェックしてくださいhttps://stackoverflow.com/questions/29788048/server-document-root-in-cli – Webdesigner

関連する問題