0

通過する変数が確実に存在している間に、ajax呼び出しから未定義になっています。

これは私のajax関数です:

function setMessages(roomId, username, message){
    $.ajax({
        type: "get",
        url: "http://www.sinansamet.nl/chatdistract/ajax/setMessages.php",
        data: { roomId:roomId, username:username, message:message },
        success: function(html) {
                  strReturn = html;
                }
        });
}

私のPHP:

<?php
$roomdId = $_GET['roomId'];
$username = $_GET['username'];
$message = $_GET['message'];


echo $username;
?>

ajax の呼び出し:

$(document).on("click", "#messageSubmit", function(){
    var username = window.localStorage["username"];
    var message = $("#message").val();
    alert(setMessages(roomId, username, message));
    alert(roomId + username + message);
});

最初のアラートは undefined を返します。どの変数を使用しても。2 番目のアラートは、想定どおりに 3 つの変数すべてを返します。したがって、それらは確かに存在します。これにはphonegapを使用していますが、デスクトップブラウザでも同じです。

4

3 に答える 3

2

関数は値を返さず、たとえ返されたとしても ajax は非同期であるため、使用する前にデータが返されるまで待つ必要があります。

function setMessages(roomId, username, message){
    return $.ajax({
        type: "get",
        url: "http://www.sinansamet.nl/chatdistract/ajax/setMessages.php",
        data: { roomId:roomId, username:username, message:message }
    });
}

$(document).on("click", "#messageSubmit", function(){
    var username = window.localStorage["username"],
        message  = $("#message").val();

    setMessages(roomId, username, message).done(function(data) {
        alert(data);
    });
});
于 2013-06-06T20:21:16.220 に答える