Веб-формы ASP.NET Передача Ajax jQuery несколько параметров к веб-Методу

Здесь уже существует много хороших ответов. Но я хотел бы способствовать с другой перспективой.

Истощение примерно любого допускающего повторное использование ресурса должно быть восстанавливаемым в целом. Обоснование состоит в том, что каждая часть программы является в основном sub программой. Просто, потому что один sub не может завершиться к, он - конец в этом очень моменте времени, не означает, что все состояние программы является мусором. Просто, потому что парковка полна автомобилей, не означает, что Вы повреждаете свой автомобиль. Или Вы ожидаете некоторое время, чтобы стенд был свободен, или Вы управляете к хранилищу еще дальше для покупки cookie.

В большинстве случаев существует альтернативный путь. При создании из ошибки неисправимый, эффективно удаляет много опций, и ни одному из нас не нравится сделать, чтобы любой решил для нас, что мы можем и не можем сделать.

то же относится к дисковому пространству. Это - действительно то же обоснование. И вопреки Вашей инсинуации о переполнении стека неисправимо, я сказал бы, что это и произвольное ограничение. Нет никакого серьезного основания, что Вы не должны мочь выдать исключение (выталкивающий много кадров) и затем использовать другой менее эффективный подход, чтобы сделать задание.

Мои два цента :-)

5
задан Cœur 31 December 2016 в 18:20
поделиться

4 ответа

Вот пример из моего кода:

Ссылка на функции 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
2
ответ дан 15 December 2019 в 06:31
поделиться

Вы можете передавать параметры без фигурных скобок.

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) {
  }
});
0
ответ дан 15 December 2019 в 06:31
поделиться

Я думаю, вам не хватает только сериализации ваших параметров в JSON с помощью JSON.stringify (data) .

Некоторые браузеры, такие как FF3 + и IE8, реализуют JSON.stringify изначально. Другим нужна ссылка на http://json.org/json2.js (конечно, размещенный на вашем собственном домене).

Также попробуйте удалить async: false из параметры - возможно, это не влияет ни на что, но я никогда не использовал его.

И последнее: действительно ли URL вашего веб-метода OrderSummary.aspx / JSONUpdateOrder ? Может ли это быть .asmx вместо .aspx?

Изменить: используйте скрипач , чтобы узнать, какой ответ вернет сервер, если таковой имеется.

1
ответ дан 15 December 2019 в 06:31
поделиться

Просто попробуйте этот код работать

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);
        }
    });
}
0
ответ дан 15 December 2019 в 06:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: