2016-06-11 2 views
0

POST에서 JSON을 PHP 스크립트로 보내고 있습니다. JSON에서 객체 값을 가져올 수 없습니다. 다음과 같은 POST의 형식은 다음PHP를 사용하여 Ajax POST에서 JSON을 가져올 수 없습니다.

[{ "이름": "양", "값": "12"}]

자바

("#idForm").submit(function(e) { 

     var url = "post.php"; // the script where you handle the form input. 
     var formData = JSON.stringify($("#idForm").serializeArray()); 
     alert(formData); 

     $.ajax({ 
     type: "POST", 
     url: url, 
     data: formData, 
     dataType: 'json', 
     success: function(dataresponse) { 
      document.getElementById("orderamount").innerHTML = dataresponse.orderamount; 
     } 
     }); 

PHP

if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') { 

$data = array(); 

$json = json_decode(file_get_contents('php://input'), true); 
$data['orderamount'] = $json['amount']; 
//this works 
//$data['orderamount'] = '12345'; 

echo json_encode($data); 
} 

하나를 내가 뭘 잘못하고 있는거야?

+0

가능한 문제점 : 1) console.log (formData)를 시도하고 올바른지 확인하십시오. 2) console.log (dataresponse) 그리고 dataresponse.orderamount를 통해 데이터에 액세스하는 것이 올바른지 확인하십시오. 3) PHP에서, if에 실제로 참여하고 있는지, 어쩌면 .txt 또는 .html 파일에 물건을 로깅하여 일어나고 있는지 추적 할 수 있는지 확인하십시오 (file_put_contents 사용). 이 모든 경우에 javascript 콘솔은 가장 친한 친구이며 대개 작동하지 않는 내용이나 응답으로 돌아 오는 내용을 알려줍니다. PHP는 (AJAX 요청을 직접적으로 통과하지는 않지만) 그렇게하지 않으므로 세 번째 점도 처리해야합니다. – briosheje

+0

아래 @swap의 대답을보십시오. 당신은 많은 이름/값 튜플을 포함 할 수있는 배열 구문을 가지고 있습니다. 그것을 배열로 취급하십시오. – YvesLeBorg

+0

웹 콘솔은 별 도움이되지 않았습니다. 나는 PHP 스크립트에서 txt 파일로 내용을 썼다. 출력은 - a : 5 : {i : 0; a : 2 : {s : 4 : "이름"; s : 6 : "금액"; s : 5 : "값"; s : 2 : "12";} } – mmmbaileys

답변

-2

응답

document.getElementById를 ("orderamount에서

<?php 
$json = "[{\"name\":\"amount\",\"value\":\"12\"}]"; 
$dec = json_decode($json,true); 

for($idx = 0; $idx < count($dec); $idx++){ 
    $obj = (Array)$dec[$idx]; 
    echo $obj["name"]; 
} 
?> 
+1

이것은 application/x-www-form-urlencoded 데이터가 아니며 JSON입니다. – Quentin

1

요청 및 사전을 보내기 전에 시도하십시오 ") .innerHTML = dataresponse [ 'orderamount'];

-2

, 다음과 같이 그 안에 우리는 JSON 배열을 구문 분석 할 수

setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
0

예 json에는 이름과 값이라는 두 개의 매개 변수가 있습니다. 당신은 $json['name'] 대신 $json['amount'] 사용해야

[{ "12", "이름": "양", "값"}]. 다음 예제를 시도 할 수 있습니다.

if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') { 
$data = array(); 
$json = json_decode(file_get_contents('php://input'), true); 
if($json['name']=='amount') { 
$data['orderamount'] = $json['value']; 
} 
echo json_encode($data); 
} 
관련 문제