Обновить значение параметра ajax url в jquery - PullRequest
0 голосов
/ 23 октября 2019

У меня есть выпадающий список, который при выборе должен обновить URL, чтобы я мог отправить этот обновленный URL через jquery ajax, получить обновленный результат и опубликовать его обратно. Проблема, с которой я сейчас сталкиваюсь, заключается в том, что я не могу изменить одно из значений параметра строки запроса с помощью моего вызова jquery. Как бы я поступил так? Пожалуйста, смотрите ниже.

<div class="col-sm-5">
                @{
                    var href = Url.Action<MassUploadIndexController>(c => c.LoadTemplateProperties(Model.ClientId, Model.UploadType, @property.Name, @property.SelectedValueId));
                }
                @if (!property.IsEnabled)
                {
                    @Html.UI().DropDownList($"Properties[{@property.Name}]", selectList: @property.Options.Select(o => new SelectListItem { Text = o.Text, Value = o.Value, Selected = o.Value == @property.SelectedValueId.ToString() }), htmlAttributes: new { @class = "propertySelector", @disabled = "disabled", @data_reloadUrl = href })
                }
                else
                {
                    @Html.UI().DropDownList($"Properties[{@property.Name}]", selectList: @property.Options.Select(o => new SelectListItem { Text = o.Text, Value = o.Value, Selected = o.Value == @property.SelectedValueId.ToString() }), htmlAttributes: new { @class = "propertySelector", @data_reloadUrl = href })
                }
            </div>

И сценарий

$(document).on("change", ".propertySelector", function (e) {
            var link = $(this).attr('data-reloadUrl');
            link.val().replace("selectedValueId=00000000-0000-0000-0000-000000000000", $(this).val());
            alert(link);
            $.ajax({
                url: link,
                    success: function (data) {
                        var newHtml = $(data);
                        $("#selectpropertycontainer").html(newHtml);
                    }
            });
        });

URL, который я вижу на консоли: / site1 / client / 77089cca-c09d-419e-8978-72aef1133c8e / upload / loadproperties? UploadType = metadata & name = ProgramId & selectedValueId = 00000000-0000-0000-0000-000000000000

Значение, которое я хочу изменить, когда выбрано раскрывающееся значение, является selectedValueId. Я хочу обновить значение до правильного guid из выпадающего списка выбранного значения.

Дайте мне знать, если вам нужна дополнительная информация. Спасибо!

1 Ответ

0 голосов
/ 23 октября 2019

Ваш вопрос сводится к следующим строкам:

var link = $(this).attr('data-reloadUrl');
link.val().replace("selectedValueId=00000000-0000-0000-0000-000000000000", $(this).val());
  • Когда вы используете .attr, он (в данном случае) возвращает строку, поэтому вы не хотите link.val().replace(
  • Когда вы используете .replace, он не заменяет на месте, он возвращает новую строку с новым значением, поэтому вам нужно куда-то, чтобы она пошла
  • Если вы замените "selectedValueId =[guid] "с" [guid] "вы потеряете" selectedValueId = "

Предоставление:

var link = $(this).attr('data-reloadUrl')
                  .replace("selectedValueId=00000000-0000-0000-0000-000000000000",
                           "selectedValueId=" + $(this).val());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...