Как сравнить результат функции sucess со строкой, когда тип данных, используемый для выполнения ajax-вызова веб-сервиса, равен «jsonp»

#javascript #jquery #ajax #web-services #jsonp

#javascript #jquery #ajax #веб-сервисы #jsonp

Вопрос:

Я вызываю веб-сервис RESTful с помощью jQuery

Я хочу сравнить ответ, возвращаемый функцией success, со строкой, используя структуру if-else

Примечание: ответ от веб-сервиса RESTful — JSONObject : — «Добро пожаловать, пользователь»

Вот мой код:

             $("#loginform").submit(function(event){

            event.preventDefault();

            var user = document.getElementById("username").value;
            var pass = document.getElementById("password").value;

        $.ajax({
            url: "http://ec2-xx-xxx-xxx-xx.compute-1.amazonaws.com:8080/UserManagement/rest/user_details/sign_in",
            type: "POST",
            crossDomain: true,
            dataType: 'jsonp',
            data: { username: user, password: pass},
            success: function (result) {
            resultDiv.innerHTML=resu<

            if (result.toString() == "Welcome User")
            {
                //link to direct to homepage
            }
                            else alert("Invalid details");

            },
            error: function (xhr, ajaxOptions, thrownError) {
            }
        });
  

Пожалуйста, посмотрите на часть if-else и предложите мне, как сравнить ответ со строкой?

Ответ №1:

Если результатом вашего ajax-вызова является объект JSON, то вы не сможете таким образом проверить глубокое равенство. Вам нужно будет найти ключевой индекс строкового значения «Добро пожаловать, пользователь».

Если вы не уверены в поступающих данных, вы всегда можете перебрать объект JSON и проверить наличие «Добро пожаловать, пользователь», например, в вашем успешном обратном вызове :

 var containedString = false;
for (var key in results) {
  if (results[key] === "Welcome User") {
    containedString = true;
  }
}

if (containedString = true) {
  // link to homepage
} else {
  alert("Invalid Details");
}
  

В качестве примечания, всегда используйте triple === в javascript, так как это безопаснее!

Комментарии:

1. Я попытался добавить это, но по-прежнему блок if-else не выполняет свой код в блоке ‘if’: console.log («Привет, пользователь»);