2013-05-09 2 views
2

У меня есть js-скрипт, который выполняет запрос ajax и отправляет данные в php-скрипт, этот скрипт с последующим эхом возвращается обратно в зависимости от того, работает оно или нет.JQuery ajax POST response is null

вот 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"; 
    } 

Так в основном, я думал, что ответ в `успех: функция (ответ)» метод будет заполняться либо "ЭТО СРАБОТАЛО!!!" или "NOT POSTED" в зависимости от оператора if в php. Теперь все, кажется, работает, потому что сценарий JS удается перейти в отчет успеха, но выводит на консоль:

Response was null

Мне нужно, чтобы иметь возможность получить отдачу от сервера для обновления экрана.

Любые идеи, что я делаю неправильно?

+0

Вы можете вставить свой 'результата массива $ _POST' здесь? Чтобы каждое тело узнало, что вы публикуете! – NullPointer

+0

Проблема в том, что я получаю сообщение об ошибке, отправленное в php, и я получаю массив() пустым массивом. – ragebunny

+0

Вот почему ваш ответ из файла PHP дает вам «null» – NullPointer

ответ

4

Try:

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

Красивые пятна. Я предположил, что имена $ _POST верны. +1! –

1

использовать это в вашем файле PHP

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

    } 

вместо

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

Obiously if(isset($_POST["json"])) заявление не прибегала, так что ни один из обоих вторит выполняется , Вызывается тот факт, что функция, указанная в успехе .ajax, вызывает только то, что http-соединение с URL-адресом было успешным, оно не указывает на успешную обработку данных.

0

Посмотрите, вы отправляете данные в market переменная не в json. Пожалуйста, измените код single.php этим.

$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. Я выполнил ваш код, но я получаю эту ошибку 'Uncaught TypeError: не могу прочитать данные свойства 'null' – ragebunny

+0

Хорошо. позвольте мне проверить тестовую страницу. –

+0

Попробуйте сейчас, я обновил код вызова ajax. Это будет работать для вас. Я проверил это лично на тестовой странице. Если у вас больше запросов, дайте мне знать ... :) –

0

Вы используете "success:" wrong.

Попробуйте это вместо этого.

$.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

Я пробовал использовать сделанный метод, но я продолжаю получать с ним ошибки. – ragebunny

+0

Какие ошибки? –

+0

'Uncaught TypeError: Object # не имеет метода 'done'' – ragebunny

0

Вы должны изменить вас $.Ajax вызова с

//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 
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

в файле PHP проверить $ _POST:

echo(json_encode($_POST)); 

, который покажет, если ваши данные были размещены или нет и структуру данных в $ _POST.

Я использовал следующий код для преобразования отправленных данных в ассоциативный массив:

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