Ajax를 사용하여 어레이를 PHP 스크립트로 전송
.push 함수로 만든 어레이가 있습니다.배열에는 매우 큰 데이터가 있습니다.이것을 PHP 스크립트로 보내는 가장 좋은 방법은 무엇입니까?
dataString = ??? ; // array?
$.ajax({
type: "POST",
url: "script.php",
data: dataString,
cache: false,
success: function(){
alert("OK");
}
});
script.script:
$data = $_POST['data'];
// here i would like use foreach:
foreach($data as $d){
echo $d;
}
어떻게 하면 좋을까요?
데이터 문자열을 JSON으로 인코딩합니다.
dataString = ??? ; // array?
var jsonString = JSON.stringify(dataString);
$.ajax({
type: "POST",
url: "script.php",
data: {data : jsonString},
cache: false,
success: function(){
alert("OK");
}
});
PHP에서
$data = json_decode(stripslashes($_POST['data']));
// here i would like use foreach:
foreach($data as $d){
echo $d;
}
메모
POST를 통해 데이터를 전송할 때는 키 값 쌍으로 해야 합니다.
따라서
data: dataString
틀렸습니다.대신 다음 작업을 수행합니다.
data: {data:dataString}
dataString = [];
$.ajax({
type: "POST",
url: "script.php",
data:{data: $(dataString).serializeArray()},
cache: false,
success: function(){
alert("OK");
}
});
http://api.jquery.com/serializeArray/
1개의 디멘터리 어레이를 송신하려고 했을 때 jquery가 그것을 콤마 구분값으로 변환하고 있었을 경우는, 다음의 코드에 따라서 실제의 어레이가 송신됩니다.php
모든 쉼표로 구분된 bull**it은 아닙니다.
예를 들어 다음과 같은 이름의 단일 치수 어레이를 연결해야 합니다.myvals
.
jQuery('#someform').on('submit', function (e) {
e.preventDefault();
var data = $(this).serializeArray();
var myvals = [21, 52, 13, 24, 75]; // This array could come from anywhere you choose
for (i = 0; i < myvals.length; i++) {
data.push({
name: "myvals[]", // These blank empty brackets are imp!
value: myvals[i]
});
}
jQuery.ajax({
type: "post",
url: jQuery(this).attr('action'),
dataType: "json",
data: data, // You have to just pass our data variable plain and simple no Rube Goldberg sh*t.
success: function (r) {
...
이제 안으로php
이렇게 하면
print_r($_POST);
당신은...을 얻을 것이다.
Array
(
[someinputinsidetheform] => 023
[anotherforminput] => 111
[myvals] => Array
(
[0] => 21
[1] => 52
[2] => 13
[3] => 24
[4] => 75
)
)
실례지만 웹과 특히 SO에는 Rube-Goldberg 솔루션이 산재해 있습니다.그러나 이들 솔루션 중 우아하거나 실제로 Ajax 포스트를 통해 1차원 배열을 게시하는 문제를 해결하는 것은 없습니다.이 솔루션을 배포하는 것을 잊지 마십시오.
jQuery의 데이터ajax()
함수는 익명 개체를 입력으로 받아들입니다. 설명서를 참조하십시오.예를 들어 다음과 같습니다.
dataString = {key: 'val', key2: 'val2'};
$.ajax({
type: "POST",
url: "script.php",
data: dataString,
cache: false,
success: function(){
alert("OK");
}
});
POST/GET 쿼리를 직접 작성할 수도 있습니다.key=val&key2=val2
하지만 현실적이지 않은 탈출은 스스로 감당해야 할 거야
dataString은 데이터의 형식을 문자열로 지정(문자로 구분되는 경우도 있음)하는 것을 나타냅니다.
$data = explode(",", $_POST['data']);
foreach($data as $d){
echo $d;
}
dataString이 문자열이 아니라 배열에 영향을 미치는 경우(질문에 따라 다름) JSON을 사용합니다.
언급URL : https://stackoverflow.com/questions/9001526/send-array-with-ajax-to-php-script
'programing' 카테고리의 다른 글
Web Socket 접속 장애.웹 소켓 핸드쉐이크 중 오류가 발생했습니다.응답 코드 403? (0) | 2023.03.11 |
---|---|
npm 시작 오류와 create-param-app입니다. (0) | 2023.03.11 |
Angularjs는 로컬 json 파일에 액세스합니다. (0) | 2023.03.11 |
mongodb에서 ISODate를 사용한 날짜 쿼리가 작동하지 않는 것 같습니다. (0) | 2023.03.11 |
"True"(JSON)를 Python 등가 "True"(참)로 변환 (0) | 2023.03.11 |