Как вернуть значение, используя ajax - PullRequest
2 голосов
/ 10 мая 2010

У меня есть Ajax-файл, в котором написан код для принятия значений от пользователя, а затем эти значения принимаются в функции Ajax следующим образом:

$(document).ready(function(){  
            $("#newsletterform").validate();  
            $('#Submit').click(function(){  
                var name = $('#newsletter_name').val();  
                var email = $('#newsletter_email').val();  
                 sendValue(email,name);  
            });  
            }); 

Функция для передачи значений и получения значений из другого файла:

function sendValue(str,name){  
                $.post(  
                "newsletter/subscribe.php", //Ajax file  
                { sendValue: str,  
                  sendVal: name  
                },  
                function(data2){  
                    $('#display').html(data2.returnValue);  
                },  

    //How you want the data formated when it is returned from the server.
                "json"  
                );  
            }  

и эти значения передаются в другой файл с именем «subscribe.php», в который записывается код вставки в базу данных, и я снова возвращаю значение моей первой функции ajax следующим образом:

echo json_encode(array("returnValue"=>$msg));  
The msg is ging to contain my message to be displayed.  

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

data2 is null
[Break on this error] $('#display').html(data2.returnValue);  

Это дает только ошибку для возвращаемого значения, но вставка, функция отправки почты работает нормально.
Пожалуйста, предоставьте мне хорошее решение, в котором я смогу вернуть возвращаемые значения без каких-либо ошибок.
Заранее спасибо.

Ответы [ 4 ]

1 голос
/ 10 мая 2010

Если это работает на вашем сайте разработки, я подозреваю, что ошибка в вашем PHP-скрипте.Ваш хост может запустить древнюю версию php, которая не имеет json_encode ().Просто вызовите скрипт вручную, чтобы проверить его вывод.Если это требует POST, вы можете написать форму или проверить результат в вашем вызове ajax с помощью FireBug

0 голосов
/ 21 мая 2010

Если у вас есть firebug, запишите data2 на его консоль и посмотрите, что это:

function(data2) {  
    console.log(data2);
    $('#display').html(data2.returnValue);  
}

Кроме того, вы можете использовать сетевую панель firebug для просмотра вашего необработанного ответа php-файла (если он имеет ошибку - вы увидите его там).

0 голосов
/ 20 мая 2010

Без дополнительных объяснений, почему это происходит, попробуйте следующее:

$(document).ready(function(){  
        $("#newsletterform").validate();  
        $('#Submit').click(function(e){  // added the e paramenter
            var name = $('#newsletter_name').val();  
            var email = $('#newsletter_email').val();  
             sendValue(email,name);
            e.stop(); // dont submit the form normaly
        });  
}); 
0 голосов
/ 10 мая 2010

Используйте это:

var response = $.ajax({
   type : "POST",
   url : "newsletter/subscribe.php",
   dataType : "json",
   async : false,
   data : "sendValue="+str+"&sendVal="+name
}).responseText;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...