>  기사  >  백엔드 개발  >  게시물을 제출할 때 PHP가 해당 페이지로 이동하지 않으면 어떻게 해야 합니까?

게시물을 제출할 때 PHP가 해당 페이지로 이동하지 않으면 어떻게 해야 합니까?

PHPz
PHPz원래의
2023-03-29 10:13:35986검색

인터넷이 발전함에 따라 점점 더 많은 웹사이트에서 양식을 통해 사용자 데이터를 제출해야 합니다. 그 중 널리 사용되는 서버측 프로그래밍 언어인 PHP는 양식 데이터를 처리하는 데 매우 적합합니다. PHP에서는 POST 메서드를 통해 양식 데이터를 전달할 수 있습니다. 일반적으로 POST는 제출 후 다른 페이지로 이동하지만 때로는 양식 데이터를 제출한 후 페이지가 이동하지 않고 제출 결과가 동일한 페이지에 표시되기를 바라는 경우도 있습니다. 이 기사에서는 페이지로 이동하지 않고 POST 요청의 PHP 제출을 구현하는 방법을 소개합니다.

1. AJAX 기술 사용

AJAX는 Asynchronous JavaScript and XML(Asynchronous JavaScript and XML)의 약자로 전체 페이지를 새로 고치지 않고 JavaScript 백그라운드를 통해 서버에서 데이터를 가져오는 기술입니다. 따라서 AJAX 기술을 사용하면 페이지를 새로 고치지 않고도 양식 데이터를 제출할 수 있습니다.

먼저 HTML 코드에 jQuery 라이브러리를 도입해야 합니다. jQuery는 JavaScript 프로그래밍을 크게 단순화하는 경량 JavaScript 라이브러리입니다.

<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>

jQuery에서 양식을 조작하려면 양식 태그에 ID 속성을 추가하세요.

<form id="myForm" action="submit.php" method="post">
  <!-- 表单元素 -->
</form>

JavaScript에서 jQuery의 $.post() 메서드를 사용하여 양식 데이터를 제출하세요. 샘플 코드는 다음과 같습니다.

$(function(){
  $('#myForm').submit(function(event){
    event.preventDefault(); // 阻止表单默认提交
    $.post('submit.php', $(this).serialize(), function(response){
      // 处理服务器返回的响应数据
    });
  });
});

$.post() 메소드는 제출할 URL, 제출할 데이터, 성공 시 콜백 함수의 세 가지 매개변수를 받습니다. 그 중 $(this).serialize() 메소드는 쉽게 전송할 수 있도록 양식 데이터를 문자열로 직렬화할 수 있습니다.

PHP 파일(예: submit.php)에서 $_POST 슈퍼 전역 배열을 사용하여 양식 데이터를 수신하고 처리 후 클라이언트에 반환합니다. 샘플 코드는 다음과 같습니다.

<?php
// 处理表单数据
$response = array("status" => 1, "message" => "提交成功");
echo json_encode($response); // 将响应数据转换为 JSON 格式返回给客户端
?>

2. iframe을 사용하여 구현

iframe을 사용하는 방법은 비교적 간단합니다. 양식을 제출할 때 숨겨진 iframe을 생성하고 양식 데이터를 iframe에 제출할 수 있습니다. 양식 데이터는 iframe 내에서 제출되므로 현재 페이지의 URL은 변경되지 않습니다. 마지막으로 JS를 통해 iframe의 응답 데이터를 가져와서 현재 페이지에 표시할 수 있습니다.

HTML 코드는 다음과 같습니다.

<form id="myForm" target="iframe" action="submit.php" method="post">
  <!-- 表单元素 -->
  <input type="submit" value="提交">
</form>
<iframe name="iframe" style="display:none;"></iframe>

그 중 양식의 target 속성은 제출할 창이나 프레임을 지정합니다. 점프하지 않는 페이지를 달성하고 싶기 때문에 대상을 숨겨진 iframe으로 지정합니다.

submit.php에서 양식 데이터를 처리하고 iframe에 응답 데이터를 반환합니다.

<?php
// 处理表单数据
$response = array("status" => 1, "message" => "提交成功");
echo "<script>parent.postMessage('" . json_encode($response) . "', '*');</script>"; // 将响应数据传递给父页面
?>

상위 페이지에서 JS를 통해 iframe의 로드 이벤트를 듣고 iframe에서 응답 데이터를 얻습니다.

$(function(){
  $('#iframe').on('load', function(){
    var response = $(this).contents().find('body').html();
    // 处理服务器返回的响应数据
  });
});

Summary

이 기사에서는 페이지를 이동하지 않고 PHP POST 요청 제출을 구현하는 두 가지 방법, 즉 AJAX 기술을 사용하는 방법과 iframe을 사용하는 방법을 소개합니다. 두 가지 방법 모두 장점과 단점이 있으며 특정 요구 사항에 따라 선택할 수 있습니다.

AJAX 기술을 사용하면 페이지 새로 고침을 최대한 방지할 수 있으며 작업 프로세스가 더 원활해집니다. 그러나 JavaScript에 대한 기본 지식과 jQuery 라이브러리에 대한 지식이 필요합니다.

iframe 기술을 사용하면 구현하기가 더 쉽지만 추가 iframe을 만들고 iframe에서 응답 데이터를 처리해야 합니다.

위 내용은 게시물을 제출할 때 PHP가 해당 페이지로 이동하지 않으면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.