2015-01-25 2 views
0

데이터 서식 문제가 있습니다. Ajax POST를 통해 PHP 함수에 전달하려는 여러 3D 배열 (stickler 배열의 배열 배열)이 있습니다. 나는이 작업은 JSON.stringify와 함께 stringifying 다음 객체로 결합과 시도했다 :아약스 POST를 통해 여러 3D 배열 전달

에 관계없이 내가 postObj 또는 postData를 내가 인덱스이 객체 인덱스의 모든 정의되지되는 오류가 발생 보내 여부
var postFile = '/games/saveMap'; 
var postObj = {'mapTiles':mapArray, 
      'tileRots':rotations, 
      'ceilings':ceiling, 
      'floors':floor, 
      'pitDepth':depth, 
      'sections':sectionNames, 
      'mapName':$('#mapName').val() 
    } 
var postData = JSON.stringify(postObj); 
$.ajax({ 
     type: 'POST', 
     url: postFile, 
     data: postObj, 
     success: function(data) 
     { 
     }, 
     error: function(jqXHR, textStatus, errorThrown) 
     { 
     } 
}); 

. 내 형식에 어떤 문제가 있습니까? POST에서 내 색인을 감지하는 데 필요한 형식은 무엇입니까?

편집 :

$mapName=$_POST['mapName']; 
$sectionNames=$_POST['sections']; 
$mapArrays=$_POST['mapTiles']; 
$rotations=$_POST['tileRots']; 
$ceilings=$_POST['ceilings']; 
$floors=$_POST['floors']; 
$pitDepth=$_POST['pitDepth']; 
+0

var postData = "mapName ="+ $ ('# mapName') .Val() + "& sections ="+ JSON.stringify (sectionNames) + "& mapTiles ="+ JSON.stringify (mapArray) + "& tileRots ="+ JSON.stringify (회전) + "& ceilings ="+ JSON.stringify (천장) + "& floors ="+ JSON.stringify (바닥) + "& pitDepth ="+ JSON.stringify (깊이); 문자열을 생성하기 위해 맵 이름을 제외하고 print_r ($ _ POST)으로 데이터를 볼 수 있지만 색인은 여전히 ​​정의되지 않았습니다. – Rorrik

답변

0

내가 서버 측 구문에 문제가 표시되지 않지만, 그것은 "정의되지 않은 인덱스"오류를 던지고있는 것이다 문제는 PHP 측에서 객체를 참조하는 것이 었습니다. 정확한 구문은

$mapName=$_POST->mapName; 
$sectionNames=$_POST->sections; 
$mapArrays=$_POST->mapTiles; 
$rotations=$_POST->tileRots; 
$ceilings=$_POST->ceilings; 
$floors=$_POST->floors; 
$pitDepth=$_POST->pitDepth; 

으로 밝혀졌습니다. Java/C++에서 기억해야 할 것이 있습니다.

0

대신이 시도 :

$.ajax({ 
    type: 'POST', 
    url: '/games/saveMap', 
    data: { 
     'mapTiles':mapArray, 
     'tileRots':rotations, 
     'ceilings':ceiling, 
     'floors':floor, 
     'pitDepth':depth, 
     'sections':sectionNames, 
     'mapName':$('#mapName').val() 
    }, 
    success: function(data) 
    { 
    }, 
    error: function(jqXHR, textStatus, errorThrown) 
    { 
    } 
}); 
+0

PHP 쪽의 각 인덱스에 대해 여전히 "정의되지 않은 인덱스"가 나타납니다. 직접 URL과 데이터 변수를 복사하는 것 외에 다른 것을 변경 했습니까? – Rorrik

+1

죄송합니다. 오해했습니다. 귀하의 정의되지 않은 인덱스가 JavaScript 측에 있다고 생각했습니다. PHP 쪽에서 print_r ($ _ POST)을 실행하면 어떻게됩니까? 그 게시물 데이터를 보시겠습니까? –

+0

디버그 도구를 이용해 주셔서 감사합니다. 인쇄되는 데이터는 mapArray에서 예상되는 종류의 숫자처럼 보이지만 다른 모든 숫자는 대괄호 안에있는 인덱스로 보이기 때문에 배열의 1/10에 해당하는 숫자 (2000) 만 있으면 충분합니다. 인덱스 문자열은 보이지 않지만 처음 몇 개의 값 [0] [0] [0]은 주 배열의 첫 번째 배열에있는 첫 번째 요소를 나타낼 것임을 나타냅니다. 마지막으로 "테두리 : 1 픽셀 고체 # 990000; 왼쪽 패딩 : 20 픽셀; 여백 : 0 0 10 픽셀 0"을 반복합니다. 여러번. – Rorrik

관련 문제