Не могу заставить JQuery AJAX работать - PullRequest
0 голосов
/ 25 мая 2011

Я пытаюсь преобразовать свою веб-страницу в ajax, но не могу заставить ее что-либо вернуть.

HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>test page</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
<!--
$(document).ready(function(){   
  // events
$("#test").click(function(){
    var myData;
    myData = makeDataVar();
    sendData(myData);
});     
  // functions
function makeDataVar(){
    return "name=joe&location=bostin";
}
function sendData(myData){
    alert("start mydata function");
    $.ajax({
        type: "POST",
        url: "http://www.mypage.com/submitMe.php",
        dataType : "json",
        data: myData,
        success: function (msg) {
            alert("Data saved: " + nameMsg);
            alert("Data saved: " + locationMsg);
            alert("data saved: " + error);
        },
        error : function(XMLHttpRequest, textStatus, errorThrown) {
            alert("error " + errorThrown);
        }
    }); 
    alert("end mydata function");           
}
}); // end document.ready
//-->
</script>    
</head>

<body>

<button type="button" id="test" >Add New</button>

</body>
</html>

PHP

<?php
$myVar = $_POST['name'];
$return['nameMsg'] = "thanks $myVar";
$myVar = $_POST['location'];
$return['locationMsg'] = "from $myVar";
$return['error'] = false;
echo json_encode($return);
?>

Я получаю все свои предупреждения javascript, кроме тех, которые находятся внутри оператора ajax (ни успеха, ни ошибки).Как будто мой сценарий пропускает это утверждение.Я не уверен, что мне здесь не хватает, но я потратил пару часов, пытаясь понять это.Буду очень признателен за любую помощь, которую вы можете предложить.

Ответы [ 5 ]

1 голос
/ 25 мая 2011

Вы нажали это на www.mypage.com? Если нет, XHR будет просто съеден, без возврата (ошибка или успех).

Кроме того, у вас есть опечатка ... 'type' должен быть в нижнем регистре, но это не должно вызывать вашу проблему.

1 голос
/ 25 мая 2011

Мой голос в том, что ваши переменные внутри обратного вызова успеха не определены, поэтому метод не компилируется или не выполняется.

alert("Data saved: " + nameMsg);
alert("Data saved: " + locationMsg);
alert("data saved: " + error);

nameMsg, locationMsg и error, похоже, нигде не определены. Похоже, это маскируется под метод, который иногда не выполняется, но инструменты разработчика Firebug или Chrome должны показать вам ошибку.

Будет ли выполнен ваш успешный обратный вызов, если вы не попытаетесь их использовать? Просто сделай

alert("foo");

и посмотрите, работает ли это.

0 голосов
/ 25 мая 2011

Это то, что вы хотите?Просто скопируйте и вставьте его в свой HTML-файл и измените ссылки ..

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>test page</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
<!--
$(document).ready(function(){   
  // events
$("#test").click(function(){
    var myData;
    myData = makeDataVar();
    sendData(myData);
});     
  // functions
function makeDataVar(){
    return "name=joe&location=bostin";
}
function sendData(myData){
    alert("start mydata function");
    $.ajax({
        type: "POST",
        url: "http://www.mypage.com/submitMe.php",
        dataType : "json",
        data: myData,
        success: function (msg) {
    //function returns json object not variables
            alert("Data saved: " + msg.nameMsg);
            alert("Data saved: " + msg.locationMsg);
            alert("data saved: " + msg.error);
        },
        error : function(XMLHttpRequest, textStatus, errorThrown) {
            alert("error " + errorThrown);
        }
    }); 
    alert("end mydata function");           
}
}); // end document.ready
//-->
</script>    
</head>

<body>

<button type="button" id="test" >Add New</button>

</body>
</html>
0 голосов
/ 25 мая 2011

Существует также вероятность того, что ваш php-скрипт может выдать «уведомление» в выходной файл из-за того, что переменная $return не инициализируется, что не возвращает действительный JSON

try

$return = array();

перед использованием

0 голосов
/ 25 мая 2011

должно быть

$.ajax({
    type: "POST",
    ....
});

Используйте что-то вроде Firebug для проверки вашего JS на наличие ошибок.

Вам также необходимо убедиться, что вы звоните по этому же домену.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...