Как создать параметры запроса в Javascript?

Pinging google.com вводит зависимость разрешения DNS. Pinging 8.8.8.8 в порядке, но Google в нескольких прыжках от меня. Все, что мне нужно сделать, - это рассказать о ближайшей вещи, которая есть в Интернете.

Я могу использовать функцию TTL Ping для ping hop # 1, then hop # 2 и т. д., пока не получаю ответ от чего-то, что находится на маршрутизируемом адресе; если этот узел находится на маршрутизируемом адресе, то он находится в Интернете. Для большинства из нас, хоп # 1 будет нашим локальным шлюзом / маршрутизатором, а hop # 2 будет первым пунктом на другой стороне нашего оптоволоконного соединения или что-то еще.

Этот код работает для меня и быстрее реагирует на некоторые другие предложения в этом потоке, потому что он пингует все, что ближе ко мне в Интернете.

using System.Net;
using System.Net.Sockets;
using System.Net.NetworkInformation;
using System.Diagnostics;

internal static bool ConnectedToInternet()
{
    const int maxHops = 30;
    const string someFarAwayIpAddress = "8.8.8.8";

    // Keep pinging further along the line from here to google 
    // until we find a response that is from a routable address
    for (int ttl = 1; ttl <= maxHops; ttl++)
    {
        Ping pinger = new Ping();
        PingOptions options = new PingOptions(ttl, true);
        byte[] buffer = new byte[32];
        PingReply reply = null;
        try
        {
            reply = pinger.Send(someFarAwayIpAddress, 10000, buffer, options);
        }
        catch (System.Net.NetworkInformation.PingException pingex)
        {
            Debug.Print("Ping exception (probably due to no network connection or recent change in network conditions), hence not connected to internet. Message: " + pingex.Message);
            return false;
        }

        System.Diagnostics.Debug.Print("Hop #" + ttl.ToString() + " is " + (reply.Address == null ? "null" : reply.Address.ToString()) + ", " + reply.Status.ToString());

        if (reply.Status != IPStatus.TtlExpired && reply.Status != IPStatus.Success)
        {
            Debug.Print("Hop #" + ttl.ToString() + " is " + reply.Status.ToString() + ", hence we are not connected.");
            return false;
        }

        if (IsRoutableAddress(reply.Address))
        {
            System.Diagnostics.Debug.Print("That's routable so you must be connected to the internet.");
            return true;
        }
    }

    return false;
}

private static bool IsRoutableAddress(IPAddress addr)
{
    if (addr == null)
    {
        return false;
    }
    else if (addr.AddressFamily == AddressFamily.InterNetworkV6)
    {
        return !addr.IsIPv6LinkLocal && !addr.IsIPv6SiteLocal;
    }
    else // IPv4
    {
        byte[] bytes = addr.GetAddressBytes();
        if (bytes[0] == 10)
        {   // Class A network
            return false;
        }
        else if (bytes[0] == 172 && bytes[1] >= 16 && bytes[1] <= 31)
        {   // Class B network
            return false;
        }
        else if (bytes[0] == 192 && bytes[1] == 168)
        {   // Class C network
            return false;
        }
        else
        {   // None of the above, so must be routable
            return true;
        }
    }
}
119
задан Csaba 13 October 2018 в 20:45
поделиться

3 ответа

Здесь Вы идете:

function encodeQueryData(data) {
   const ret = [];
   for (let d in data)
     ret.push(encodeURIComponent(d) + '=' + encodeURIComponent(data[d]));
   return ret.join('&');
}

Использование:

const data = { 'first name': 'George', 'last name': 'Jetson', 'age': 110 };
const querystring = encodeQueryData(data);
183
ответ дан Gibolt 14 October 2018 в 06:45
поделиться

Если Вы используете Прототип существует Form.serialize

, Если Вы используете jQuery, там Ajax/сериализировать

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

7
ответ дан Paolo Bergantino 14 October 2018 в 06:45
поделиться
  • 1
    Да я неправильно понял его. Только теперь я понял, что он хочет – Blackbelt 6 June 2013 в 01:44

Этот поток точки к некоторому коду для выхода из URL в php. Существует escape() и unescape(), который сделает большую часть работы, но Вы должны добавить пару дополнительных вещей.

function urlencode(str) {
str = escape(str);
str = str.replace('+', '%2B');
str = str.replace('%20', '+');
str = str.replace('*', '%2A');
str = str.replace('/', '%2F');
str = str.replace('@', '%40');
return str;
}

function urldecode(str) {
str = str.replace('+', ' ');
str = unescape(str);
return str;
}
-10
ответ дан Csaba 14 October 2018 в 06:45
поделиться
  • 1
    ooohhh..... никогда не дают 0dip tu высота listview.. попробуйте его и посмотрите в DDMS, сколько времени делает метод " onMeasure" берет, чтобы быть выполненным.. – Lorenzo Barbagli 8 December 2013 в 08:30
Другие вопросы по тегам:

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