2013-03-19 15 views
5

Mam 1 nazwę pliku php index.php. w tym pliku chcę przekazać jedną zmienną z ajax do php.przekazać zmienną z ajax do php

var elem = document.getElementById("mydiv").value; 
(function($) 
{ 
    $(document).ready(function() 
    { 
     $.ajax(
     { 
      type:"POST", 
      url: window.location.href, 
      data: 'action='+elem, 
      beforeSend: function() { 
       $('#cctv').hide(); 
      }, 
      complete: function() { 
       $('#cctv').show(); 
      }, 
      success: function() { 
       $('#cctv').show(); 
      } 
     }); 
     var $container = $("body"); 
     $container.load('findAllPath.php',{'function': 'findAllPath'}); 
     var refreshId = setInterval(function() 
     { 
      $container.load('findAllPath.php',{'function': 'findAllPath'}); 
     }, 10000); 
    }); 
})(jQuery); 

i mój php

if (isset ($_POST['action'])) 
{ 
    echo $_POST['action']; 
} 

w Firebug, widzę, że ajax już pisać 'action = wartość', ale w PHP $ _POST [ 'action'] jest pusty. ktoś może mi pomóc, co jest nie tak z moim kodem? dziękuję

+0

Czy test isset przechodzi? Czy jest ustawiony, ale tylko na pusty ciąg znaków? – Dutts

+0

Skąd na stronie jest wykonywany ten javascript? Na przykład czy znajduje się wewnątrz znacznika '', czy u dołu, w pobliżu ''? –

+0

Spróbuj wprowadzić 'dane' zamiast skrótu łańcucha zapytania. – halfer

Odpowiedz

1

zestaw to jako json obiektu:

data: {action: elem} 

i nie mieszać z czystych jQuery js.

var elem = $('#myDiv').val(); 

i jako przyjaciel powyżej powiedz. Może wystąpić sytuacja, w której js próbuje uzyskać wartość value przed załadowaniem całej strony. Powinieneś zrobić wszystko w bloku gotowym do druku.

Można również zrobić:

data: { 
action: $('#myDiv').val() 
} 

Będziesz wtedy pewny, że masz najnowsze dane na formularzu!

4

Spróbuj użyć danych jak ten

data: {action: elem}, 

na przykład

$.ajax({ 
    type: "POST", 
    url: "some.php", 
    data: { name: "John", action: "save" } 
    }).done(function(msg) { 
    alert("Data Saved: " + msg); 
}); 

printr całe $ _REQUEST i sprawdź, czy są coraz akcję przy

+0

już próbowałem, ale nie ma różnicy :( –

1

Spójrz na tym i znaleźć to, czego brakowało

$.ajax({ 
     type: "POST", 
     url: "some.php", 
     data: { action: elem} 
     beforeSend: function() { 
      $('#cctv').hide(); 
     }, 
     complete: function() { 
      $('#cctv').show(); 
     }, 
     success: function() { 
      $('#cctv').show(); 
     } 
    }); 
    var $container = $("body"); 
    $container.load('findAllPath.php',{'function': 'findAllPath'}); 
    var refreshId = setInterval(function() 
    { 
     $container.load('findAllPath.php',{'function': 'findAllPath'}); 
    }, 10000); 
}); 
+0

hmm? Nie rozumiem tego, jeśli masz na myśli adres URL: "some.php", a nie window.location.href, nie robisz żadnych innych danych –

+0

: 'action =' + elem, to jest złe jeden, czy nie otrzymujesz odpowiedzi lub nie możesz tego zrozumieć? –

0
if (!empty($_POST['action'])) 
{ 
echo $_POST['action']; 
} 

Spróbuj tego kodu ...

+0

, ale $ _POST ['action'] jest niezdefiniowana, więc pusty test nie przejdzie –

Powiązane problemy