jQuery AJAX를 사용하는 서버에 null을 전달할 수 없습니다.서버에서 수신된 값이 "null" 문자열입니다.
파이어폭스 이외의 브라우저와의 호환성을 보장하기 위해 jQuery를 사용하기 위해 javascript/php/ajax 어플리케이션을 변환하고 있습니다.
jQuery의 agax 함수를 사용하여 true, false, null 값을 전달하는 데 문제가 있습니다.
Javascript 코드:
$.ajax
(
{
url : <server_url>,
dataType: 'json',
type : 'POST',
success : receiveAjaxMessage,
data:
{
valueTrue : true,
valueFalse: false,
valueNull : null
}
}
);
PHP 코드:
var_dump($_POST);
서버 출력:
array(3) {
["valueTrue"]=>
string(4) "true"
["valueFalse"]=>
string(5) "false"
["valueNull"]=>
string(4) "null"
}
문제는 null, true 및 false 값이 문자열로 변환되고 있다는 것입니다.
현재 사용 중인 Javascript AJAX 코드는 null, true 및 false를 올바르게 전달하지만 Firefox에서만 작동합니다.
jQuery를 사용하여 이 문제를 해결하는 방법을 아는 사람이 있습니까?
위에 제시된 작동하지 않는 코드와 비교할 작동 코드(jQuery를 사용하지 않음)가 있습니다.
Javascript 코드:
ajaxPort.send
(
<server_url>,
{
valueTrue : true,
valueFalse: false,
valueNull : null
}
);
PHP 코드:
var_dump(json_decode(file_get_contents('php://input'), true));
서버 출력:
array(3) {
["valueTrue"]=>
bool(true)
["valueFalse"]=>
bool(false)
["valueNull"]=>
NULL
}
null, true 및 false 값이 올바르게 수신됩니다.
또한 두 번째 방법에서는 $_POST 배열이 PHP 코드에서 사용되지 않습니다.저는 이것이 문제의 핵심이라고 생각하지만, 저는 jQuery를 사용하여 이 동작을 복제할 방법을 찾을 수 없습니다.
아래 답변을 수락한 후 이 섹션이 추가되었습니다.
여기 원본 코드의 수정된 버전이 있습니다.
Javascript 코드:
$.ajax
(
{
url : <server_url>,
dataType: 'json',
type : 'POST',
success : receiveAjaxMessage,
data : JSON.stringify
(
{
valueTrue : true,
valueFalse: false,
valueNull : null
}
)
}
);
PHP 코드:
var_dump(json_decode(file_get_contents('php://input'), true));
서버 출력:
array(3) {
["valueTrue"]=>
bool(true)
["valueFalse"]=>
bool(false)
["valueNull"]=>
NULL
}
당신은 무엇을 기대합니까?이 값을 단순 텍스트 문자열인 POST 매개 변수로 보냅니다.형식 안전 전송을 원하는 경우 JSON과 같은 인코딩을 사용합니다.dataType
수행 - 서버의 응답을 나타냅니다.)
null 대신 정의되지 않은 항목을 사용할 수 있습니다.
data: {
valueTrue : true,
valueFalse: false,
valueNull : undefined
}
이 버그는 jQuery 1.8에서 수정되었습니다.
https://github.com/jquery/jquery/pull/714
저는 제 경험상 쿼리 매개 변수를 valueNull=dll이 아닌 valueNull=dll로 보낼 것으로 예상합니다.
JSON과 함께 REST를 수행하는 경우에도 GET에 대한 쿼리 매개 변수를 전송해야 하며 이 문제를 해결하기 위해 모든 GET을 POST로 변환해서는 안 됩니다.
언급URL : https://stackoverflow.com/questions/2794183/cannot-pass-null-to-server-using-jquery-ajax-value-received-at-the-server-is-th
'programing' 카테고리의 다른 글
전화 간격을 사용하여 바코드를 스캔하는 방법 (0) | 2023.08.19 |
---|---|
python으로 Excel 호환 CSV 파일을 생성하시겠습니까? (0) | 2023.08.19 |
장애가 발생한 도커 빌드의 파일 시스템을 검사하려면 어떻게 해야 합니까? (0) | 2023.08.19 |
'git credential-osxkeychain'에 저장된 자격 증명을 어떻게 재설정합니까? (0) | 2023.08.19 |
페이지 새로 고침 후 입력 값 유지 (0) | 2023.08.19 |