2015-06-22 5 views
0

У меня есть вызов ajax, который запрашивает данные из метода контроллера MVC.
Я возвращаю результат Json от контроллера.

Запрос Ajax завершается, но возвращаемые данные не определены.

Ajax вызова
Ajax call возвращает неопределенные данные

var param = { 
    "username": uname, 
    "password": pass 
}; 
var serviceURL = "/Account/CheckUser"; 

var req = $.ajax({ 
    url: serviceURL, 
    type: "POST", 

    data: JSON.stringify(param), 

    contentType: "application/json", 

    complete: successFunc, 
    error: errorFunc 
}); 

function successFunc(data) { 
    if (data.exists == true) { 
     console.log("Completed : " + data.exists); 
    } else { 
     console.log("Failed : " + data.exists); 

    } 
} 


Метод контроллера

[HttpPost] 
public JsonResult CheckUser(string uname, string pass) 
{ 
    Boolean cont = true; 
    return Json(new { exists = cont }); 
} 



Может кто-нибудь сказать мне, почему exists возвращается как неопределенная?

ОБНОВЛЕНИЕ
Как было предложено ниже, я написал данные на консоль и, кажется, возвращает пустую строку. Поэтому, я думаю, вопрос должен быть более «Почему данные возвращаются пустым?

+0

Что предоставляет 'console.log (data)' give you? – reg4in

+0

Проверьте console.log (JSON.stringify (данные)) или оповещение (JSON.stringify (data)), чтобы узнать, что вы получаете. Чтобы проверить, действительно ли вы достигли CheckUser, поместите точку останова в начале метода, чтобы точно увидеть, что происходит внутри. –

+1

Или, еще лучше, добавьте 'debugger;' в свою функцию и научитесь отлаживать JavaScript в своем браузере. –

ответ

2

Функция, которую вы указываете через опцию completedoesn't receive the data (по уважительной причине: она вызывается, даже если нет данных, поскольку произошла ошибка). Изменить complete: на success:.

var req = $.ajax({ 
    url: serviceURL, 
    type: "POST", 

    data: JSON.stringify(param), 

    contentType: "application/json", 

    success: successFunc, // <=== Here 
    error: errorFunc 
}); 
+0

Спасибо, это полезный совет, однако я все равно получаю неопределенный. – piggy

+0

@piggy: тогда вы захотите использовать отладчик в своем браузере: проверьте «данные» и посмотрите, что это такое, посмотрите на вкладке «Сеть» или «Сеть», чтобы увидеть исходный ответ с сервера и т. Д. и т. д. –

+0

В разделе «Ответ» на вкладке сети я получаю «Этот запрос не имеет доступных данных ответа» ' – piggy

Смежные вопросы