2013-10-12 2 views
2

Я передаю переменную от javascript к другой странице PHP через ajax. Я не в состоянии это сделать. Это код, который у меня есть до сих пор.Переменная AJAX pass от javascript к PHP

<script> 
function loadXMLDoc() 
     { 
     $.ajax({ 
        type: "POST", 
        url: "update.php", 
        data: { value : masterdata }, 
        success: function(data) 
        { 
         alert("success!"); 
        } 
       }); 

} 
$("button").on('click',function(){ loadXMLDoc(); }); 
</script> 

Мастердат переменных приходит от другого яваскрипта функции, в которой я объявил переменные во всем мире, так как в этом ниже функции.

<script> 

    var masterdata;  
    $("[data-slider]") 

     .each(function() { 
      var range; 
      var input = $(this); 
      $("<span>").addClass("output") 
       .insertAfter(input); 
      range = input.data("slider-range").split(","); 
      $("<span>").addClass("range") 
       .html(range[0]) 
       .insertBefore(input); 
      $("<span>").addClass("range") 
       .html(range[1]) 
       .insertAfter(input); 
     }) 
     .bind("slider:ready slider:changed", function (event, data) { 
      $(this).nextAll(".output:first") 
       .html(data.value.toFixed(2)); 
       masterdata = data.value; 

     }); 


</script> 

В моем файле update.php, я пытаюсь получить доступ к переменной, используя $ _REQUEST. Код выглядит следующим образом.

<?php 

    $uid = $_REQUEST['value']; 
    echo "Am I getting printed"; 
    echo $uid; 
    // Do whatever you want with the $uid 
?> 

Однако, если я нажму на Update кнопку ничего не происходит. Я просто получаю предупреждение, говорящее «Успех» для моего вызова ajax. Может кто-нибудь, пожалуйста, помогите мне?

+0

И что вы ожидаете? –

+0

Попробуйте: «echo $ HTTP_RAW_POST_DATA;» на вашем PHP, чтобы узнать, какие данные POST вы получите. Это может помочь вам отладить. – user2759991

+0

Я ожидаю напечатать значение $ uid в моем файле update.php, который вызывает клик кнопки ** Обновить **. –

ответ

1

в функции успеха, вы не просили его, чтобы отобразить возвращающий данные, именно поэтому вы видите только предупреждение, изменить его на:

success: function(data) 
    { 
    alert(data); 
    } 

потому что data здесь значения, возвращаемые из вашего запроса

и для части php помните об одной вещи, просто скорректируйте вашу php-страницу, чтобы отобразить нужные вам данные, и помните, что неважно, как вы делаете эти данные, с echo или просто простым html, результатом кода php - это то, что вы получите в своей переменной в ajax. и если вы идете JSON, вы можете сделать на странице PHP:

$uid = $_REQUEST['value']; 
$x.uid = $uid; 
$x.something = "something"; 
return $x; 

таким образом, вы будете иметь все необходимые данные на стороне клиента в качестве объекта, а затем вы можете манипулировать его так, как вам нравится, в гораздо более компактный способ, просто найдите RESTful api, если вы хотите узнать больше о теме

+0

Да.Я получаю ответ в оповещении. Но как я могу отобразить его в отдельном файле PHP? Например, я вызываю файл update.php через ajax-запрос. Я отправляю переменную javascript через ajax-запрос в файл update.php. Мне нужно отобразить файл update.php, а не отображать предупреждение (данные). Является ли это возможным? –

+0

см. Обновление, пожалуйста, –

+0

'успех: функция (данные) { предупреждение (данные); } ' В приведенной выше функции вместо предупреждения (данных) мне нужно отобразить содержимое файла PHP. Я не хочу окно предупреждения, но мне нужно отображать таблицы, которые у меня есть в моем файле update.php. Возможно ли использование ajax? –

0

Я бы порекомендовал JSON-кодирование вывода, полученного вами из вашего update.php, и передал его обратно в функцию AJAX. В файле update.php, вы можете просто использовать функцию PHP json_encode($var), и эхо его:

<?php 
    $uid = $_REQUEST['value']; 
    echo json_encode($uid); 
?> 

С вашей функции AJAX, вы должны указать dataType (обычно JS будет разумно угадать тип возвращаемых данных, но мы должны всегда указывайте его на всякий случай):

function loadXMLDoc() { 
    $.ajax({ 
     type: "POST", 
     url: "update.php", 
     data: { value : masterdata }, 
     dataType: "json", 
     success: function(data) { 
      // Log data into console for reference (and checking, perhaps) 
      console.log(data); 

      // Parse data here 
     } 
    }); 
} 
Смежные вопросы