Ajax를 사용하여 JSON을 PHP로 보내는 중
데이터를 json 형식으로 php로 보내고 php로 작업을 하고 싶습니다.문제는 json 데이터를 ajax를 통해 php 파일로 전송할 수 없다는 것입니다.어떻게 하면 좋을까요?난 이 방법을 시도했다.
<script>
$(function (){
$("#add-cart").click(function(){
var bid=$('#bid').val();
var myqty=new Array()
var myprice=new Array()
qty1=$('#qty10').val();
qty2=$('#qty11').val();
qty3=$('#qty12').val();
price1=$('#price1').val();
price2=$('#price2').val();
price3=$('#price3').val();
var postData =
{
"bid":bid,
"location1":"1","quantity1":qty1,"price1":price1,
"location2":"2","quantity2":qty2,"price2":price2,
"location3":"3","quantity3":qty3,"price3":price3
}
var dataString = JSON.stringify(postData);
$.ajax({
type: "POST",
dataType: "json",
url: "add_cart.php",
data: {myData:dataString},
contentType: "application/json; charset=utf-8",
success: function(data){
alert('Items added');
},
error: function(e){
console.log(e.message);
}
});
});
});
</script>
PHP에서는 다음을 사용합니다.
if(isset($_POST['myData'])){
$obj = json_decode($_POST['myData']);
//some php operation
}
php 파일에 print_r($_POST)를 추가하면 firebug에 어레이(0) {}이(가) 표시됩니다.
를 잃다contentType: "application/json; charset=utf-8",
서버에 JSON을 보내는 것이 아니라 일반 POST 쿼리(JSON 문자열 포함)를 보내는 것입니다.
그게 당신이 할 일이 될 거예요.
중요한 것은, 당신은 그것을 사용할 필요가 없다는 겁니다.JSON.stringify
또는json_decode
여기서요.다음 작업을 수행합니다.
data: {myData:postData},
그 후 PHP에서는:
$obj = $_POST['myData'];
그 이유는$_POST
에는 폼 데이터가 미리 채워져 있습니다.
JSON 데이터(또는 원시 입력)를 가져오려면 를 사용합니다.
$json = json_decode(file_get_contents("php://input"));
json과 ajax를 사용하여 javascript obj를 php로 전송하려면:
js:
var dataPost = {
"var": "foo"
};
var dataString = JSON.stringify(dataPost);
$.ajax({
url: 'server.php',
data: {myData: dataString},
type: 'POST',
success: function(response) {
alert(response);
}
});
php에서 해당 개체를 사용하려면:
$obj = json_decode($_POST["myData"]);
echo $obj->var;
변수를 통해 값을 가져오려면 내용을 지정하지 마십시오.라고 입력합니다."application/json"
디폴트를 사용합니다."application/x-www-form-urlencoded; charset=UTF-8"
:
JavaScript:
var person = { name: "John" };
$.ajax({
//contentType: "application/json", // php://input
contentType: "application/x-www-form-urlencoded; charset=UTF-8", // $_POST
dataType : "json",
method: "POST",
url: "http://localhost/test/test.php",
data: {data: person}
})
.done(function(data) {
console.log("test: ", data);
$("#result").text(data.name);
})
.fail(function(data) {
console.log("error: ", data);
});
PHP:
<?php
// $_POST
$jsonString = $_POST['data'];
$newJsonString = json_encode($jsonString);
header('Content-Type: application/json');
echo $newJsonString;
JavaScript에서 PHP로 JSON을 전송하려면 다음 절차를 따릅니다.
JavaScript:
var person = { name: "John" };
$.ajax({
contentType: "application/json", // php://input
//contentType: "application/x-www-form-urlencoded; charset=UTF-8", // $_POST
dataType : "json",
method: "POST",
url: "http://localhost/test/test.php",
data: person
})
.done(function(data) {
console.log("test: ", data);
$("#result").text(data.name);
})
.fail(function(data) {
console.log("error: ", data);
});
PHP:
<?php
$jsonString = file_get_contents("php://input");
$phpObject = json_decode($jsonString);
$newJsonString = json_encode($phpObject);
header('Content-Type: application/json');
echo $newJsonString;
다음과 같은 방법을 시도해 볼 수 있을 것 같습니다.
var postData =
{
"bid":bid,
"location1":"1","quantity1":qty1,"price1":price1,
"location2":"2","quantity2":qty2,"price2":price2,
"location3":"3","quantity3":qty3,"price3":price3
}
$.ajax({
type: "POST",
dataType: "json",
url: "add_cart.php",
data: postData,
success: function(data){
alert('Items added');
},
error: function(e){
console.log(e.message);
}
});
json 인코딩은 자동으로 이루어지며 게시물의 덤프는 다음과 같은 정보를 제공합니다.
array(
"bid"=>bid,
"location1"=>"1",
"quantity1"=>qty1,
"price1"=>price1,
"location2"=>"2",
"quantity2"=>qty2,
"price2"=>price2,
"location3"=>"3",
"quantity3"=>qty3,
"price3"=>price3
)
제거만 하면 됩니다.
...
//dataType: "json",
url: "index.php",
data: {myData:postData},
//contentType: "application/json; charset=utf-8",
...
js 객체 포맷으로 js 어레이를 전송하려고 합니다.
사용하는 대신
var a = new array();
a['something']=...
시험:
var a = new Object();
a.something = ...
오랜만이긴 하지만, 누군가 여전히 필요할 때를 대비해서:
전달해야 하는 JSON 개체:
0:{CommunityId: 509, ListingKey: "20281", Type: 10, Name: "", District: "", Description: "",…}
1:{CommunityId: 510, ListingKey: "20281", Type: 10, Name: "", District: "", Description: "",…}
Ajax 코드:
data: JSON.stringify(The-data-shows-above),
type: 'POST',
datatype: 'JSON',
contentType: "application/json; charset=utf-8"
PHP 측면은 다음과 같습니다.
json_decode(file_get_contents("php://input"));
효과가 있어요. 도움이 되길 바래요!
언급URL : https://stackoverflow.com/questions/10955017/sending-json-to-php-using-ajax
'programing' 카테고리의 다른 글
Woocommerce는 제품 ID별로 이미지 갤러리를 가져옵니다. (0) | 2023.03.08 |
---|---|
iPhone/iOS JSON 해석 튜토리얼 (0) | 2023.03.08 |
컴포넌트의 렌더 어레이를 리액트 (0) | 2023.03.08 |
텍스트 입력에서 ng-change가 작동하지 않음 (0) | 2023.03.08 |
angularjs 형식 재설정 오류 (0) | 2023.03.08 |