2017-01-10 4 views
1

Я создал форму усилителя. Когда я нажимаю на Butona, я проверяю значения в форме с разных страниц. У меня здесь нет проблем. Если все данные верны, я хочу направить уникальный adrese. Как я могу направить посетителя, когда форма положительная?Amp XHR Form Pages Redirect

<script async custom-element="amp-form" src="https://cdn.ampproject.org/v0/amp-form-0.1.js"></script> 
<script async custom-template="amp-mustache" src="https://cdn.ampproject.org/v0/amp-mustache-0.1.js"></script> 

<form method="POST" action-xhr="//example.com/control" target="_top"> 
<input type="checkbox" name="items[]" value="1" /> 
<input type="checkbox" name="items[]" value="2" /> 
<input type="checkbox" name="items[]" value="3" /> 
... 
<button type="submit" class="btn">Check and go</button> 
<div submit-success> 
    <template type="amp-mustache"> 
     {{message}} 
    </template> 
</div> 
<div submit-error> 
    <template type="amp-mustache"> 
     {{message}} 
    </template> 
</div> 
</form> 

Я показываю запросы, поступающие с Json в переменной с именем message. Я хочу переслать другой адрес, а не показывать последнее сообщение. Возможно ли это с помощью AMP?

+0

Пожалуйста, добавьте ваши коды –

+0

Я добавляю код. – PHPSEO

ответ

1

Если вы используете PHP во внутреннем интерфейсе для управления представленных значений формы XHR, то вы можете просто следовать этому:

if(!empty($_POST)){ 

    //--YOUR OTHER CODING-- 
    //........... 

    $domain_url = (isset($_SERVER['HTTPS']) ? "https" : "http") . "://$_SERVER[HTTP_HOST]"; 
    $redirect_url = 'https://example.com/forms/thank-you/'; //-->MUST BE 'https://'; 

    header("Content-type: application/json"); 
    header("Access-Control-Allow-Credentials: true"); 
    header("Access-Control-Allow-Origin: *.ampproject.org"); 
    header("AMP-Access-Control-Allow-Source-Origin: ".$domain_url); 

    if(isEmailAlreadyExist($_POST['email'])){ //-->SAMPLE Valiation! 
     //-->Any 40X status code! 
     //Reference-1: https://github.com/ampproject/amphtml/issues/6058 
     //Reference-2: http://php.net/manual/pt_BR/function.http-response-code.php 
     header("HTTP/1.0 412 Precondition Failed", true, 412); 
     echo json_encode(array('errmsg'=>'This email already exist!')); 
     die(); 
    }else{ 
     //--Assuming all validations are good here-- 
     if(empty($redirect_url)){ 
      header("Access-Control-Expose-Headers: AMP-Access-Control-Allow-Source-Origin"); 
     }else{ 
      header("AMP-Redirect-To: ".$redirect_url); 
      header("Access-Control-Expose-Headers: AMP-Redirect-To, AMP-Access-Control-Allow-Source-Origin"); 
     } 
     echo json_encode(array('successmsg'=>'My success message. [It will be displayed shortly(!) if with redirect]')); 
     die(); 
    } 
} 

Существует limitation, что перенаправление URL должен быть абсолютным HTTPS URL, иначе AMP выдает ошибку, и перенаправление не произойдет. Надеюсь, это поможет;)

-3

Вместо использования

action-xhr="//example.com/control" 

Использование

action="//example.com/control" 

И пусть URL (//example.com/control) перенаправляет пользователя

+0

Это не ответ на этот вопрос! – Farsheed