Передать переменную javascript с помощью jquery - PullRequest
0 голосов
/ 27 марта 2011

index.php

<script type="text/javascript">
    document.write(lastmsgID); // fail display the value (my problem is here, please help)
        function myfunction()
        {
            jQuery.get("usermessage.php, function(data) {
               document.write(lastmsgID); //success display the value
            });
        };
</script>

usermessage.php

<?php $latestmsgid= "lovelovelove";
echo("<script type='text/javascript'>\n"); // pass php varible to javascript global variable lastmsgID
echo("lastmsgID = '". $latestmsgid  ."';\n");
echo("</script>"); 
?>

Из приведенных выше кодов я объявляю глобальную переменную javascript lastmsgID в файле usermessage.php.Затем я использовал jQuery.get, чтобы получить значение переменной.Теперь моя проблема в том, что я могу получить только значение переменной внутри функции myfunction (), как я могу передать значение переменной из функции за пределы функции?

Обновление:

<script type="text/javascript">
        function myfunction()
        {
            jQuery.get("usermessage.php, function(data) {
               var test=data
               document.write(test); //success display the value
            });
        };

        document.write(test); // fail display the value because it is outside the function. (my problem is here, please help)
    </script>

Ответы [ 2 ]

0 голосов
/ 27 марта 2011

PHP

<?php
$latestmsgid = Array("id" => "lovelovelove");
echo json_encode($lastmsgid);
?>

JS

var ID;

$.getJSON("usermessage.php", function(json) {
    ID = json.id;
});
0 голосов
/ 27 марта 2011

usermessage.php содержит объект HTML <script>, но index.php никогда ничего не делает с HTML, который он получает обратно от вызова AJAX (data). Вам необходимо добавить полученный HTML-код в основной DOM.

Вместо этого я рекомендую, чтобы usermessage.php возвращал lastMsgID в виде простого текста (или JSON), а затем у вас это есть в переменной data.

Обновление

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

<script type="text/javascript">
    var MyVariable = ''; // global variable: changes to it will be global too

    function myfunction() {
        jQuery.get("usermessage.php, function(data) {
           MyVariable = data;
        });
    };

    document.write(MyVariable);
    /* ^ this will work, but not quite here. it'll show you the value
       ONLY if you write this line somewhere so that it executes *after*
       the jQuery.get call has completed. */
</script>
...