私はこれに関する他のいくつかの質問を読みましたが、これを機能させる方法をまだ理解できませんでした。
私はajax呼び出しを行うこの関数を持っています:
function validateDataPoint(newDataPoint) {
var $form = $(this).parents('form');
var $formAction = $form.attr('action');
var $validationResult;
return $.ajax({
type: "POST",
url: "/DataPoints/ValidateNewDataPointBeforeSaving",
data: newDataPoint
});
return $validationResult;
}
そして、これは私が別の関数内からそれを呼び出す方法です:
var validationRequest = validateDataPoint(newDataPoint);
validationResult = validationRequest.success(function (data) {
return data.Urn;
});
次に、同じ関数内で、data.Urnの文字列値が、サーバー側で完了した処理に関連して「Success」または「Failed」のいずれかになるため、validationResultの値をテストします。
したがって、以下のコードがあります。
//post the Json object to the server to validate and get the result
var validationRequest = validateDataPoint(newDataPoint);
validationResult = validationRequest.success(function (data) {
return data.Urn;
});
//based on the result give the thumbs-up or thumbs-down
if (validationResult == "Success") {
resultFlag = "<span class='badge badge-success'><i class='icon-thumbs-up icon-white'></i></span>";
}
else if (validationResult == "Failed") {
resultFlag = "<span class='badge badge-important'><i class='icon-thumbs-down icon-white'></i></span>";
}
else {
resultFlag = "<span class='badge badge-warning'></span>";
}
だから問題は...
validateResult.responseTextの値にアクセスしようとすると、未定義のエラーが発生します。基本的に、data.Urnの値をvalidationResultに割り当てたいのですが、これを機能させることができません。警告した場合(validationResult); [object Object]を取得し、alert(validationResult);を取得します。未定義になります。
ここで何が欠けていますか?