2013-04-19 7 views
0

PHP로 JSON-POST-Request를 읽으려고했지만 다음 오류가 발생합니다. 여기PHP가 JSON-POST-Request를 읽고이를 다시 보내십시오.

Request failed: parsererror

내 코드

<script type="text/javascript" charset="utf-8" src="resources/js/model/Product.js"></script> 
<script> 
    function getdetails(){ 

     var p = new Product(15,11.5,"Pizza Test","P"); 
     var z = new Product(68,1.5,"Zutate Test","Z"); 

     p.addOneProduct(z); 

     var request = $.ajax({ 
      type: "POST", 
      url: "yb_test_post.php", 
      dataType: "json", 
      data: JSON.stringify(p) 
     }); 

     request.done(function(msg) { 
      $("#msg").html(" Post parameter are: <br/>"+msg); 
     }); 

     request.fail(function(jqXHR, textStatus) { 
      alert("Request failed: " + textStatus); 
     }); 
    } 
</script> 

내 PHP 코드, 난 POST 요청을 읽고 즉시

<table> 
<?php 


    foreach ($_POST as $key => $value) { 
     echo "<tr>"; 
     echo "<td>"; 
     echo $key; 
     echo "</td>"; 
     echo "<td>"; 
     echo $value; 
     echo "</td>"; 
     echo "</tr>"; 
    } 


?> 
</table> 

내가 뭘 잘못 인쇄하려고?

Product.js

function Product(id, price, name, type){ 
    this.id = id; 
    this.price = +price; 
    this.totalPrice = +price; 
    this.name = name; 
    this.type = type; 
    this.products = []; 
    var self = this; 

    this.addOneProduct = function(oneProduct){ 
     self.products.push(oneProduct); 
     self.totalPrice= self.totalPrice+oneProduct.price; 
    }; 
} 
+0

'제품'이란 무엇입니까? –

답변

1

당신은 data: JSON.stringify(p)을 다하고 있습니다. 게시물 본문으로 JSON 문자열을 보냅니다. 너는 이것을 원하지 않는다. PHP는 이것을 자동으로 분석하지 않습니다. PHP에 쿼리 문자열을 보내려면 PHP가 자동으로 배열을 $_POST 배열로 구문 분석하게합니다.

JSON.stringify을 잃어 버리고 그냥 시도하십시오 : data: p.

또한 dataType: "json"응답 아닌 요청Content-type의 것이다. PHP가 HTML을 다시 전송하므로 원하는 내용은 dataType: "html"입니다.

var request = $.ajax({ 
    type: "POST", 
    url: "yb_test_post.php", 
    dataType: "html", 
    data: p 
}); 
+0

시도했지만 웹 콘솔에 다음 오류 메시지가 표시됩니다. TypeError : oneProduct는 정의되지 않았습니다. self.totalPrice = self.totalPrice + oneProduct.price; – user1167253

+0

@ user1167253 : 나는 그것을 두려워했습니다. 직렬화 할 때 jQuery는 함수를 호출하여 값을 가져옵니다. 이 문제를 해결하려면'if (! oneProduct) {return '';}'을'addOneProduct'의 첫 번째 줄에 추가하십시오. –

+0

Thx, 그게 다예요. 하지만 Send-Format은 JSON이 아닙니다. PHP JSON으로 보내려면 어떻게해야합니까? – user1167253

관련 문제