Сохранить значение в URL с сохранением исходных значений в браузере

#javascript #asp.net

#javascript #asp.net

Вопрос:

Итак, я создаю am ASP.net страница, использующая JavaScript для вычисления расстояния между двумя почтовыми кодами. после отправки формы на странице отображаются оба адреса и расстояние. Однако я хочу использовать эти значения в ASP.NET итак, я сохранил расстояние в URL, чтобы я мог вызывать его с помощью .net label но когда я это делаю, и поскольку он должен вернуться на сервер, он обновляет страницу и удаляет вычисленные значения JavaScript! Я хочу сохранить расстояние в URL в дополнение к сохранению вычисленных значений на странице. Вот что у меня есть сейчас

 var geocoder, location1, location2;


function initialize() {
    geocoder = new GClientGeocoder();
}

function showLocation() {
    geocoder.getLocations(document.forms[0].address1.value, function (response) {
        if (!response || response.Status.code != 200)
        {
            alert("Sorry, we were unable to geocode the first address");
        }
        else
        {
            location1 = {lat: response.Placemark[0].Point.coordinates[1], lon: response.Placemark[0].Point.coordinates[0], address: response.Placemark[0].address};
            geocoder.getLocations(document.forms[0].address2.value, function (response) {
                if (!response || response.Status.code != 200)
                {
                    alert("Sorry, we were unable to geocode the second address");
                }
                else
                {
                    location2 = {lat: response.Placemark[0].Point.coordinates[1], lon: response.Placemark[0].Point.coordinates[0], address: response.Placemark[0].address};
                    calculateDistance();
                }
            });
        }
    });
}

function calculateDistance()

{
    try
    {
        var glatlng1 = new GLatLng(location1.lat, location1.lon);
        var glatlng2 = new GLatLng(location2.lat, location2.lon);
        var miledistance = glatlng1.distanceFrom(glatlng2, 3959).toFixed(1);
        var kmdistance = (miledistance * 1.609344).toFixed(1);


        document.getElementById('results').innerHTML = 
        '<strong>Address 1: </strong>'   location1.address   
        '<br /><strong>Address 2: </strong>'   location2.address   
        '<br /><strong>Distance: </strong>'   miledistance   ' miles (or '   kmdistance   ' kilometers)';
        //  '<br /><strong>HiddenField </strong>'   miledistance;

                var loc = self.location.href;
        window.location.href = loc "?D=" miledistance;

    }

    catch (error)
    {
        alert(error);
    }

}


</script>
  

 <form action="#" onsubmit="showLocation();return false;">
  <p>
    <input type="text" name="address1" value="45419" class="address_input" size="40" />
    <input type="text" name="address2" value="47714" class="address_input" size="40" />
    <input type="submit" name="find" value="Search" />
  </p>
</form>
<p id="results"></p>

<form id="form1" runat="server">
<div>

    <asp:Label ID="Label3" runat="server"></asp:Label>
    <br />
    <asp:Label ID="Label2" name="address1" value="Address 1" class="address_input" size="40" runat="server"></asp:Label>

<br />
    <asp:Label ID="Label1" runat="server"></asp:Label>
    <br />
    <br />
    <asp:Button ID="Button1" runat="server" PostBackUrl="~/Size.aspx?a='miledistance'" Text="Next" />

</div>
</form>
  

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

1. Либо используйте asp для передачи значений обратно в JS, либо выполните какую-нибудь AJAX-ю функцию для отправки данных на ваш сервер. Зачем вам нужна сторона сервера данных?

2. потому что я использую ASP.Net (Поскольку я обучен в основном ASP) и хочу сохранить данные в элементах управления на стороне сервера asp, чтобы использовать эти значения на другой странице.

Ответ №1:

Вы должны передавать значения обратно на сервер, используя поля формы, а не как параметры в вашем URL.

Попробуйте добавить скрытое поле в свою форму под названием distance:

 <input type="hidden" name="distance" value=""/>
  

Затем заполните это скрытое поле в вашей функции calculateDistance():

 document.getElementById('distance').value = miledistance;
  

Затем вы можете использовать это значение на стороне сервера:

 string distance = Request["distance"];
  

или

 int distance = Convert.ToInt32(Request["distance"]);
  

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

Удачи!

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

1. Большое спасибо, я не программист, поэтому у меня все еще есть несколько вопросов. Что вы подразумеваете под «Тогда вы можете использовать это значение на стороне сервера», должно ли это быть в форме сервера, которую я написал выше? Также, как я могу отобразить его с помощью элементов управления литеральной формой (например, метки)