2016-08-25 14 views
0

私の悪い英語のために申し訳ありません。私は、AJAXスクリプトを介してPHP関数を実行しようとしています。 PHPスクリプトはFULL NORMAL PHPスクリプトとして実行する必要があります。私の考えは、ページをリフレッシュせずに[送信]ボタンで再呼び出しを実行することです。それは動作していますが、その後、通常のPHPスクリプトを実行する方法が見つかりませんでした。ここに私のスクリプトの一部があります。ajax/jqueryでフルphpスクリプトを実行

PHP:

if(isset($_REQUEST['startattack'])){ 
    $secret="********************"; 
    $response=$_POST["g-recaptcha-response"]; 
    $verify=file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret={$secret}&response={$response}"); 

    $captcha_success=json_decode($verify); 

    if ($captcha_success->success==false) {  
     echo "<script type='text/javascript'>alert('failed!')</script>"; 
    } else if ($captcha_success->success==true) { 
     echo "<script type='text/javascript'>alert('success!')</script>"; 
    }  
} 

HTML:

<form method='post' id="myform"> 
    <center> 
     <div class="g-recaptcha" data-sitekey="6LfETygTAAAAAMC7bQu5A3ZhlPv2KBrh8zIo_Nwa"></div> 
    </center> 
    <button type="submit" id="startattack" name="startattack" onclick="mycall()" class="btn btn-attack">Start Attack</button> 
</form> 

AJAX:

<script> 
    $(function() { 
     $('button').bind('click', function (event) { 
      $.ajax({ 
       type: 'POST', 
       url: 'post.php', 
       data: $('button').serialize(), 
       success: function() { 
        alert('button was submitted'); 
        type: 'post'; 
        url: 'post.php'; 
       } 
      }); 

      event.preventDefault();// using this page stop being refreshing 
     }); 
    }); 
</script> 

は、私がここにreCAPTCHAのを確認したいです。正しければ、correctをPHPにエコーして、後で機能を追加したいと思います。 false captchaと同じです。

答えて

1

私は少し物事を単純化することができると思います。あなたはAjaxでの応答を返さないことがあなたの主な問題です。

PHP:

ちょうど(私はあなたがg-recaptcha-responseキー/値を取得見当がつかないが、あなたはどこにでもそれを送信していない)reCAPTCHAのから返されるJSONをエコー。

if(isset($_POST['startattack'])){ 
    $secret = "********************"; 
    // I have added a key/value in the ajax called "sitekey", 
    // this might be what you are trying to retrieve? 
    $response = $_POST["g-recaptcha-response"]; 
    echo file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret={$secret}&response={$response}"); 
    exit; 
} 

AJAX:

$(function() { 
    $('button').bind('click', function (event) { 
     var statusBlock = $('#status'); 
     statusBlock.text('button was submitted'); 
     $.ajax({ 
      type: 'POST', 
      url: 'post.php', 
      data: { 
       // Not sure if you are trying to pass this key or not... 
       "sitekey":$('.g-recaptcha').data('sitekey'), 
       "startattack":true 
      }, 
      success: function (response) { 
       var decode = JSON.parse(response); 
       var alertMsg = (decode.success)? 'Success' : 'Failed'; 
       statusBlock.text(''); 
       alert(alertMsg); 
      } 
     }); 
     // using this page stop being refreshing 
     event.preventDefault(); 
    }); 
}); 

フォーム::

私はreCAPTCHAのからのリターンはちょうどそれをエコーし​​、こちら側にそれを拾う、とにかくJSONであることから考える

送信ステータスを送信して、返品警告ダイアログに干渉しないようにしてください窓。

<form method='post' id="myform"> 
    <div id="status"></div> 
    <center> 
     <div class="g-recaptcha" data-sitekey="6LfETygTAAAAAMC7bQu5A3ZhlPv2KBrh8zIo_Nwa"></div> 
    </center> 
    <button type="submit" id="startattack" name="startattack" onclick="mycall()" class="btn btn-attack">Start Attack</button> 
</form> 
関連する問題