Здесь уже существует много хороших ответов. Но я хотел бы способствовать с другой перспективой.
Истощение примерно любого допускающего повторное использование ресурса должно быть восстанавливаемым в целом. Обоснование состоит в том, что каждая часть программы является в основном sub программой. Просто, потому что один sub не может завершиться к, он - конец в этом очень моменте времени, не означает, что все состояние программы является мусором. Просто, потому что парковка полна автомобилей, не означает, что Вы повреждаете свой автомобиль. Или Вы ожидаете некоторое время, чтобы стенд был свободен, или Вы управляете к хранилищу еще дальше для покупки cookie.
В большинстве случаев существует альтернативный путь. При создании из ошибки неисправимый, эффективно удаляет много опций, и ни одному из нас не нравится сделать, чтобы любой решил для нас, что мы можем и не можем сделать.
то же относится к дисковому пространству. Это - действительно то же обоснование. И вопреки Вашей инсинуации о переполнении стека неисправимо, я сказал бы, что это и произвольное ограничение. Нет никакого серьезного основания, что Вы не должны мочь выдать исключение (выталкивающий много кадров) и затем использовать другой менее эффективный подход, чтобы сделать задание.
Мои два цента :-)
Вот пример из моего кода:
Ссылка на функции JSON, которые вы видите ( http://www.json.org/js.html )
var selected = $("#ddPackageContainerType option:selected");
var DTO = JSON.stringify({ sContainerType: selected.val(), sLocation: '<%=Location%>' });
$.ajax({
data: DTO,
type: "POST",
contentType: "application/json; charset=utf-8",
dataType: "json",
url:"helpers/packinguiservice.asmx/GetContainerDetail",
success: function (data, textStatus) {
var oContainerDetail = JSON.parse(data);
//Fill In All the data returned
$('#txtPackageLength').val(parseFloat(oContainerDetail.Length).toFixed(1));
$('#txtPackageWidth').val(parseFloat(oContainerDetail.Width).toFixed(1));
$('#txtPackageHeight').val(parseFloat(oContainerDetail.Height).toFixed(1));
$('#ddPackageDimensionsUOM').val(oContainerDetail.LengthUOM);
$('#txtPackageWeight').val(parseFloat(oContainerDetail.PackageWeight).toFixed(1));
hideInfoOverlay();
},
error: function(objXMLHttpRequest, textStatus, errorThrown) {
//Show Error
hideInfoOverlay();
showErrorOverlay(' ' + objXMLHttpRequest.responseText);
}
});
И соответствующий WebMethod:
<WebMethod()> _
<ScriptMethod(ResponseFormat:=ResponseFormat.Json)> _
Public Function GetContainerDetail(ByVal sContainerType As String, ByVal sLocation As String) As String
Dim oPackageInfo As New Dictionary(Of String, String)()
Dim oPackage As Pacejet.Base.Package
Try
AppStatic.MyLocation = sLocation
oPackage = Pacejet.Base.Package.GetPackageByKey(sContainerType)
If Not oPackage Is Nothing Then
oPackageInfo.Add("Length", oPackage.Length.Value)
oPackageInfo.Add("Width", oPackage.Width.Value)
oPackageInfo.Add("Height", oPackage.Height.Value)
oPackageInfo.Add("LengthUOM", oPackage.LengthUOM.Value)
oPackageInfo.Add("PackageWeight", oPackage.StandardWeight.Value)
End If
Catch ex As Exception
Throw New HttpException(System.Net.HttpStatusCode.InternalServerError, ex.Message)
End Try
Return New JavaScriptSerializer().Serialize(oPackageInfo)
End Function
Вы можете передавать параметры без фигурных скобок.
var params =
{
"showStartDate": showStartDate,
"showEndDate": showEndDate,
"arrivalDate": arrivalDate,
"pickUpDate": pickUpDate
};
$.ajax({
type: "POST",
url: "OrderSummary.aspx/JSONUpdateOrder",
async: false,
data: params,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(data) {
}
});
Я думаю, вам не хватает только сериализации ваших параметров в JSON с помощью JSON.stringify (data)
.
Некоторые браузеры, такие как FF3 + и IE8, реализуют JSON.stringify
изначально. Другим нужна ссылка на http://json.org/json2.js
(конечно, размещенный на вашем собственном домене).
Также попробуйте удалить async: false
из параметры - возможно, это не влияет ни на что, но я никогда не использовал его.
И последнее: действительно ли URL вашего веб-метода OrderSummary.aspx / JSONUpdateOrder
? Может ли это быть .asmx вместо .aspx?
Изменить: используйте скрипач , чтобы узнать, какой ответ вернет сервер, если таковой имеется.
Просто попробуйте этот код работать
function ShowAvailability() {
$.ajax({
type: "POST",
url: "CS.aspx/CheckUserName",
data: '{userName: "' + $("#<%=txtUserName.ClientID%>")[0].value + '",userName1: "' + $("#<%=TextBox1.ClientID%>")[0].value + '" }',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: OnSuccess,
failure: function(response) {
alert(response);
}
});
}