programing

jQuery AJAX/POST가 데이터를 PHP로 전송하지 않음

lastmoon 2023. 4. 2. 11:50
반응형

jQuery AJAX/POST가 데이터를 PHP로 전송하지 않음

그래서 저는 잠시 이 문제를 안고 있고, 이 주제에 대해 수많은 질문이 있다는 것을 알고 있습니다. 가능한 모든 해결책을 시도해 봤지만 여전히 효과가 없습니다.

이것은 내 경우 작동하지 않는 가장 간단한 예입니다.

j쿼리:

$.ajax({
    url: "ajax/add-user.php",
    type: "POST",
    data: {name: 'John'},
    success: function(data){
        console.log(data);
    }
});

PHP

echo json_encode($_POST);

바로 그겁니다.항상 빈 어레이를 응답으로 돌려받습니다.로 시도했다.serialize()를 위해data:근데 항상 반응이 공허해요.게시된 값을 받아야 할 때 오류가 전혀 발생하지 않고 빈 배열만 표시됩니다.

예를 들어, php에서 내가 시도한다면echo하드코드화된 변수들은 이해하지만$_POST그리고.$_GET작동하지 않습니다.

문제를 특정할 수 있는 솔루션 또는 방법이 있습니까?

감사해요.

편집/솔루션

네, 문제는 .htaccess에서 URL을 다시 쓰고 확장자를 삭제한 것 같습니다.실제로 네트워크 탭에서 요청이 영구적으로 이동되었습니다.ajax url: 에서 .php 확장자를 삭제하면 해결되었습니다.시간을 내주셔서 감사합니다.건배.

ajax 호출에서는 데이터 유형을 json으로 설정해야 합니다.

JQUERY 코드:

$.ajax({
  url: "ajax/add-user.php",
  type: "POST",
  dataType:'json',
  data: {name: 'John'},
  success: function(data){
      console.log(data);
  }
});

동시에, 백엔드 코드(php)를 검증해 주세요.jsondata?

설정되어 있지 않은 경우는, 다음과 같이 헤더를 설정합니다.

PHP 코드:

/**
 * Send as JSON
 */
header("Content-Type: application/json", true);

해피 코딩:

최근에 이 문제를 발견했지만 다른 이유로 인해:

  1. POST 데이터가 301로 리다이렉트 되었습니다.
  2. 내 서버 요청은 GET이었다.
  3. POST 데이터를 받지 못했습니다.

이유 - 서버에 다음 URL이 등록되어 있습니다.

http://mywebsite.com/folder/path/to/service/

하지만 제 의뢰인이 전화했어요:

http://mywebsite.com/folder/path/to/service

서버의 .htaccess는 이를 올바른 URL로 301 GET 리다이렉트하여 POST 데이터를 삭제했습니다.간단한 해결책은 URL 경로를 다시 확인하는 것이었습니다.

@C.Ovidiu, @MarcB - 두 분 모두 디버깅에 많은 시간을 할애해 주셨습니다!

jQuery.post 를 사용해 주세요.

$.post("ajax/add-user.php",
       {name: 'John'},
       function(response){
           console.log(response);
       }
);

그런 다음 다음과 같이 입력을 PHP에 저장할 수 있습니다.

if(isset($_POST["name"]))
{
    $name= $_POST["name"];
    file_put_contents("name.txt", $name)
    header('HTTP/1.1 200 OK');
}
else
{
    header('HTTP/1.1 500 Internal Server Error');
}

exit;

저도 같은 문제를 겪고 있었는데, 그 문제가 제 변수 중 하나였음이 드러났습니다.data개체가 정의되지 않았습니다.어떤 이유로 인해 포스트 데이터가 전송되지 않았습니다.변수를 정의되지 않은 것으로 설정하면 문제가 해결되었습니다.

코드를 편집하고 다음을 사용합니다.

$.ajax({url: 'ajax/add-user.php',
type: 'POST',
data: {name: 'John'},
dataType: 'html',
success: function(data){
alert("success");
console.log(data);
},error: function (xhr, ajaxOptions, thrownError) {alert("ERROR:" + xhr.responseText+" - "+thrownError);}
});

(오류 및 성공 알림이 표시되므로 html이 표시되는지 확인합니다.이 추가 파라미터는 Ajax 콜을 미세 조정하는 데 도움이 됩니다.나중에 비동기 true/false로 재생)

또한 프로그램 ajax/add-user를 실행합니다.새 창에서 php(url 입력)을 눌러 에코를 확인합니다.프로그램을 편집하여 "전설적인 hello world"와 같은 내용을 강제로 에코하고 메시지를 받을 수 있는지 확인합니다.

행운을 빌어요.

여러 가지를 시도해 보았지만, 아래의 작업 코드를 발견했습니다.

if ( $_SERVER['REQUEST_METHOD'] == 'POST' && empty($_POST) ) {
    $_POST = json_decode(file_get_contents('php://input'), true);
}

네가 노력한다면 이것은 효과가 있을 거야.

.htaccess 파일을 확인하고 "#" 기호로 줄을 닫으십시오.

# To externally redirect /dir/foo.php to /dir/foo
# RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
# RewriteRule ^ %1/ [R,L]

언급URL : https://stackoverflow.com/questions/22098791/jquery-ajax-post-not-sending-data-to-php

반응형