2013-04-01 4 views
2

Создал скрипт для чтения хеша (www.website.com/#hash) и передал хэш в php. alert(hash) всплывает с хеш-значением, но хэш не отражается в переменной post. Любая идея почему?Передать переменную из jQuery в PHP

JQuery страница

<script> 
    var hash = location.hash; 
    $.post("community.php", { 
     hash: hash 
    }); 
    alert(hash); 
</script> 

Community.php страница

<?php echo $_POST['hash']; ?> 



редактирует - $ _GET ниже было первоначально $ _POST выше.

У меня есть foreach, который перебирает сообщения (идентификаторы проводки) в функции. Мне нужно передать HASH в функцию и сравнить ее с идентификаторами проводки каждый раз. Проблема только в том, что функция $ _GET ['hash'] не будет отображаться внутри функции.

function something() { 
    echo $_GET['hash']; 
} 
+0

Откуда вы знаете, что это не эхо? Ваш код должен работать нормально –

+0

@FAngel Потому что ' 'не эхо ничего LOL –

+0

Хорошо. Позвольте мне перефразировать мой вопрос - где вы ожидаете увидеть результат эха? Вы проверили вкладку сети в инструментах разработчика или firebug и обнаружили, что ответ пуст? Или вы ожидаете увидеть его где-то на странице? Или вы пытались отладить PHP и обнаружили, что $ _POST ["hash"] пуст? –

ответ

1

$ .post - событие ajax. Вы отправляете данные с помощью ajax, так что страница не идет на communitypage.php. Для поведения, которое вы хотите, вам нужно выполнить обычную запись в форме, а не пост ajax. $ .post будет извлекать все, что вы эхо на communitypage.php, используя этот код.

//Note the 3rd argument is a callback. 
var hash = location.hash; 
$.post('communitypage.php',{hash:hash},function(data){ 
    alert(data); 
}); 

Обработать хэш на этой странице и предупредить что-нибудь, если u найти хэш.Вы бы найти отклик в data

Вы можете моды в communitypage.php вернуться HTML, как показано ниже

<?php 
if($isset($_POST["hash"]) && strlen(trim($_POST["hash"])) > 0){ 
    echo "Hash found :: " . $_POST["hash"]; 
}else 
    echo "No hash found"; 
?> 

Примечания это будет возвращать HTML вы можете изменить ответ вернуть XML, JSON в соответствии с вашими потребностями.

См. jQuery post() documentation для получения дополнительной информации.

Для обновленного вопроса

Он работает снаружи, так как он вызывается, когда вызов Ajax производится внутри функции он не будет, потому что функция не вызывается. Если вы хотите это сделать (и я не знаю, почему), вы можете сделать это.

function myfunction(){ 
    //your code goes here 
} 

myfunction(); //call the function so that the code in the function is called upon 

Хотя это излишне, если вы не хотите снова и снова вызывать эту функцию в том же скрипте. Если он работает без функции, вы должны сделать это именно так.

+0

Проверьте мой обновленный вопрос на дно. –

+0

Дайте мне знать, если вы понимаете, о чем я говорю. –

+0

@ChristianRankin уже ответил, я думаю. обновите меня, если вы этого не получили. – LoneWOLFs

3

использование Ajax, как это, послать значение в хэш

function send_hash(hash) { 
    $.ajax({ 
     url : "community.php", 
     type : "POST", 
     cache : false, 
     data : { 
     hash : hash 
     } 
    }); 
    } 

Теперь у получит

<?php echo $_POST['hash']; ?> 
+0

Это отправка, но не распечатка в php. –

3
<script> 
    var hash = location.hash; 
    $.post("community.php", { 
     hash: hash 
    }, function(responde){ alert(responde); }); 
</script> 

Чтобы проверить, что ваш PHP ответ :)

0
<script> 
    var hash = location.hash; 
    //Try this. 
    window.location.href = 'community.php?val='+hash; 
    </script> 

ИЛИ

<script> 
    $.post("community.php","val="+hash); 
    </script> 

В community.php

 $res=isset($_REQUEST['val'])?$_REQUEST['val']:''; 

надеюсь, что это даст вам какое-то решение.

0

но хэш не вторит в пост переменной

Это потому, что если вы хотите, чтобы отправить его при загрузке страницы, то вы должны использовать это в doc ready обработчика:

<script> 
    $(function(){ 
    var hash = location.hash; 
    $.post("community.php", { hash: hash }); 
    alert(hash); 
    }); 
</script> 
Смежные вопросы