2013-05-09 7 views
2

저는 AJAX 요청을 수행하고 PHP 스크립트에 데이터를 게시하는 js 스크립트를 가지고 있습니다.이 스크립트는 작동 여부에 따라 다시 echo합니다.Jquery ajax POST 응답이 null입니다.

여기 PHP JS 여기

$(document).ready(function(){ 
     var post_data = []; 
     $('.trade_window').load('signals.php?action=init'); 
     setInterval(function(){ 
      post_data = [ {market_number:1, name:$('.trade_window .market_name_1').text().trim()}, 
        {market_number:2, name:$('.trade_window .market_name_2').text().trim()}]; 

      $.ajax({ 
         url: 'signals.php', 
         type: 'POST', 
         contentType: 'application/json; charset=utf-8', 
         data:{markets:post_data}, 
         dataType: "json", 
         success: function(response){ 
          console.log("Response was " + response); 
         }, 
         failure: function(result){ 
          console.log("FAILED"); 
          console.log(result); 
         } 
      }); 
     }, 6000); 
    }); 

된다 : 따라서 기본적

if(isset($_POST["json"])) 
    { 
     $json = json_decode($_POST["json"]); 
     if(!empty($json)) 
     { 
       echo "IT WORKED!!!!"; 
     } 
      else 
       echo "NOT POSTED"; 
    } 

저는 '성공 응답 생각 : 함수 (대응)'방법으로 채워 것을 어느 "IT WORKED !!!" PHP의 if 문에 따라 "NOT POSTED"가됩니다. 이제 모든 것이 JS 스크립트가 성공의 문에 들어갈 관리하지만 콘솔이를 출력하기 때문에 제대로 작동 :

Response was null

나는 화면을 업데이트하기 위해 서버로부터 수익을 얻을 수 있어야합니다.

내가 잘못하고있는 아이디어가 있습니까?

+0

당신이 여기'$ _POST' 배열 결과를 붙여 넣을 수 있습니다 :

내가 연관 배열에 게시 된 데이터를 은밀한하려면 다음 코드를 사용했다? 그래서 모든 몸이 당신이 게시하는 것을 발견 할 것입니다! – NullPointer

+0

문제는 내가 PHP에 보낸 오류가 출력 배열() 빈 배열을 얻을 것입니다. – ragebunny

+0

PHP 파일에서 응답이'null '이되는 이유 – NullPointer

답변

4

시도 : Obiously if(isset($_POST["json"])) 문이 호출되지 않습니다

if(isset($_POST["json"])) 
    { 
. 
. 
. 
. 
} 
+0

멋지게 발견되었습니다. 나는 $ _POST 이름이 정확하다고 생각했다. +1! –

1

사용이, 그래서 모두 에코 중 어느 것도 실행 . .ajax success에 지정된 함수가 호출된다는 사실만으로는 URL에 대한 http 연결이 성공했다는 것을 알려주지 만 데이터의 성공적인 처리를 나타내지는 않습니다.

0

if(isset($_POST["markets"])) 
    { 

    } 

대신 PHP 파일에서

if(isset($_POST["markets"])) 
{ 
    $json = json_decode($_POST["markets"]); 
    if(!empty($json)) 
    { 
      echo "IT WORKED!!!!"; 
    } 
     else 
      echo "NOT POSTED"; 
} 
0

보세요, 당신은 market 변수를 json이 아닌 곳으로 보냅니다. 이것으로 single.php 코드를 변경하십시오. 당신의 AJAX 기능을

$json_data = array(); 
if(isset($_POST["markets"])) 
{ 
// $json = json_decode($_POST["markets"]); 
$json = ($_POST["markets"]); 
if(!empty($json)) 
     echo "IT WORKED!!!!"; 
    else 
     echo "NOT POSTED"; 
} 

변경

$(document).ready(function(){ 
var post_data = []; 
$('.trade_window').load('signals.php?action=init'); 
setInterval(function(){ 
    post_data = [ {market_number:1, name:$('.trade_window .market_name_1').text().trim()}, 
      {market_number:2, name:$('.trade_window .market_name_2').text().trim()}]; 

    $.ajax({ 
       url: 'signals.php', 
       type: 'post', 
     //  contentType: 'application/json; charset=utf-8', 
       data:{markets:post_data}, 
       dataType: "json", 
       success: function(response){ 
        console.log("Response was " + response); 
       }, 
       failure: function(result){ 
        console.log("FAILED"); 
        console.log(result); 
       } 
    }); 
},6000); 

});

+0

네, 방금 JSON 데이터를 보내지 않는다는 것을 깨달았습니다. 귀하의 코드를 구현했지만이 오류가 발생합니다. '잡히지 않은 TypeError : null의 속성'data '를 읽을 수 없습니다.' – ragebunny

+0

Ok. 테스트 페이지를 확인하겠습니다. –

+0

지금 시도해보십시오. 아약스 호출 코드를 업데이트했습니다. 그것은 당신을 위해 일할 것입니다. 테스트 페이지에서 직접 테스트했습니다. 더 많은 질문이 있으면 알려주세요 ... :) –

0

"성공 :"을 잘못 사용하고 있습니다.

대신 사용해보십시오.

$.post("signals.php", { markets: post_data }).done(function(data) { 
    /* This will return either "IT WORKED!!!!" or "NOT POSTED" */ 
    alert("The response is: " + data); 
}); 

또한 jQuery 설명서를 살펴보십시오. 당신이 $을 변경하려면

http://api.jquery.com/jQuery.post/

+0

done 메서드를 사용하여 시도했지만 오류가 계속 발생합니다. – ragebunny

+0

어떤 종류의 오류가 있습니까? –

+0

'Uncaught TypeError : Object # 에 'done'메소드가 없습니다. – ragebunny

0

당신은있다.

//below post_data array require quotes for keys like 'market_number' and update with your required data 
    post_data = [ {'market_number':1, 'name':'name1'}, 
      {'market_number':2, 'name':'name2'}]; 
     //console.log(post_data); 
     $.ajax({ 
      url: "yourfile.php", 
      type:'post', 
      async: true, 
      data:{'markets':post_data}, 
      dataType:'json', 
      success: function(data){ 
       console.log(data); 
      }, 
     }); 

과와 아약스 호출 당신은 PHP 파일을 확인하여 PHP 파일에

<?php 
if(isset($_POST['markets'])) 
{ 
    echo "It worked!!!"; 
} 
else 
{ 
    echo "It doesn't worked!!!"; 
} 
//if you want to work with json then below will help you 
//$data = json_encode($_POST['markets']); 
//print_r($data); 
?> 
+0

답변 주셔서 감사합니다.하지만 여전히 undefined를 반환합니다! name1 => undefined 등등. – ragebunny

+0

내 업데이트에 따라 코드를 업데이트 할 수 있습니까? – NullPointer

+0

또한'market_number'를''market_number''에 넣으면됩니다. – NullPointer

0

이 될 것입니다 $ _POST :

echo(json_encode($_POST)); 

데이터가 게시하거나하지 않은 경우 알 것이다 $ _POST에 데이터 구조가 있습니다.

$post_data = json_decode(json_encode($_POST), true);