2016-11-30 1 views
0

내 AJAX 코드에서 호출되는 foreach 루프가 있습니다. foreach 루프가 건너 뛰었습니다. 궁극적으로 foreach 루프가 배열의 각 값을 사용하여 쿼리를 실행하지만 foreach 루프가 작동하는지 먼저 테스트하려고합니다. 경고 (내 AJAX에서받은)는 원래 배열이고 항목이 추가 된 경고는 아닙니다.AJAX 호출에서 foreach 루프를 사용하는 방법은 무엇입니까?

PHP :

$data = array(); 
    if(isset($_POST['myArray']) && !empty($_SERVER['HTTP_X_REQUESTED_WITH']){ 
    $data = $_POST['myArray']; 
    foreach ($data as $item) { 
     $data[] = $item; 
    } 
    echo json_encode($data); 
    die();  
} 

AJAX :

라인 var arr = kegs;로서는
$(document).ready(function(){ 
    $('#btn-addkegs').click(function() { 
     var arr = kegs; 
     var myArray = JSON.stringify(arr); 

     $.ajax({ 
      url: "addkegs.php", 
      method: "POST", 
      dataType: "json", 
      data: {myArray: myArray}, 
      success: function (result) { 
      alert("Your kegs have been added! These include: " + result); 
      textarea.value = ""; 
      kegs = []; 
     } 
        }); 

      }); 
     }); 

가 배열 '통'의 값이 입력 필드 및 다른 AJAX 통해 설정할 수 있지만 모두가 작동되고 벌금. 내 문제는 내 PHP 코드와 함께 생각합니다.

+0

루프가 반복되는 동일한 변수를 수정하려고 시도하는 것 같습니다. 런타임에'$ data'의 실제 값은 얼마입니까? – David

+0

@David 테스트 한 사용자 입력을 기반으로 $ data = [ "1", "2", "3"]의 값과받은 경고는 동일한 값 [ "1", "2" 삼"] . – jh95

+0

AJAX 응답 후 알림에 값이 표시되면 실제 문제는 무엇입니까? – David

답변

0

게시물의 값을 통해 의견을 보내는 경우 ... 1,2,3 $ _POST [ 'myArray]]는 (는) 귀하가 보낸 문자 그대로를 받았습니다.

그래서, 데이터 변수는 다음과 같이 보인다 배열을 받게됩니다 [ '1', '2', '3']

음 ... 당신이 배열로 변수 $ 데이터를 생성되지 않기 때문에, 그리고 예, 내부에 배열을 넣는 것뿐입니다.

PHP는 $ data [] 변수를 $ data와 동일하게 간주하지 않습니다.

그래서 PHP는 각 동일한 값의 값을 겹쳐 쓰면서 마술처럼 사용했습니다.

그래서, 난 당신이 같은 배열의 값을 반복하려는 경우, 당신은이 배열을 반환 할 때

$data = $_POST['myArray']; 
foreach ($data as $item) { 
    array_push($data, $item); 
} 

이제 array_push로 배열을 참조해야합니다 생각, 당신은 {1과 같은 반응을합니다 , @ 데이비드에 의해 코멘트에서 2,3,1,2,3}

+0

함수에서 새 값을 입력하지 않는다는 것을 기억하십시오. 게시물의 값을 가져 와서이 값을 같은 이름의 "새로운 배열"에 넣는 것입니다. –

+0

해당 코드를 사용하여 동일한 결과를 얻었으며 [ "1", "2", "3"]로 경고 함 – jh95

+0

코드에 오류가 있습니다. 빈 함수가 닫히지 않았습니다 ... 또는이 코드를 복사하십시오 잘못되었거나 통과하지 못했다면 ... if (isset ($ _ POST [ 'myArray']) &&! empty ($ _ SERVER [ 'HTTP_X_REQUESTED_WITH']) { 코드가 맞는지 확인하십시오. 빈 서버 기능이없는 경우 테스트 ... –

0

답변 :

In your browser's debugging tools, take a look at the network requests. Examine the AJAX request and its response. If the result is entirely wrapped in quotes, then it's just a string and not an array. You may need to JSON-decode $_POST['myArray'] server-side to interpret it as an array.

나는 $data = json_decode($_POST['myArr']);$data = $_POST['myArr'];을 변경했습니다.

관련 문제