#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. Большое спасибо, я не программист, поэтому у меня все еще есть несколько вопросов. Что вы подразумеваете под «Тогда вы можете использовать это значение на стороне сервера», должно ли это быть в форме сервера, которую я написал выше? Также, как я могу отобразить его с помощью элементов управления литеральной формой (например, метки)