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)를 검증해 주세요.json
data?
설정되어 있지 않은 경우는, 다음과 같이 헤더를 설정합니다.
PHP 코드:
/**
* Send as JSON
*/
header("Content-Type: application/json", true);
해피 코딩:
최근에 이 문제를 발견했지만 다른 이유로 인해:
- POST 데이터가 301로 리다이렉트 되었습니다.
- 내 서버 요청은 GET이었다.
- 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
'programing' 카테고리의 다른 글
Spring @Value가 속성 파일의 값으로 확인되지 않습니다. (0) | 2023.04.02 |
---|---|
자동 시퀀스를 사용하여 쉼표로 구분된 값으로 오라클의 함수를 분할합니다. (0) | 2023.04.02 |
워드프레스(Woocommerce 확장자) - 프로그래밍 방식으로 새 순서 만들기 (0) | 2023.04.02 |
오류 상태 코드 MVC와 함께 JSON을 반환합니다. (0) | 2023.04.02 |
JObject에서 JProperty 값을 추가 또는 갱신하려면 (0) | 2023.04.02 |