Bir URL http://example.com/foo?bar
geçerli mi?
Ben şu ya da bu şekilde söyleyen resmi bir şey için bir bağlantı arıyorum. Basit bir evet / hayır cevabı veya anekdot kanıtları onu kesmez.
Bir URL http://example.com/foo?bar
geçerli mi?
Ben şu ya da bu şekilde söyleyen resmi bir şey için bir bağlantı arıyorum. Basit bir evet / hayır cevabı veya anekdot kanıtları onu kesmez.
Yanıtlar:
URI RFC sorgu dizesi için bir format zorunlu kılmamaktadır. Sorgu dizesinin genellikle ad-değer çiftleri taşıyacağı kabul edilse de, (örneğin genellikle başka bir URI içerecektir) gerekli değildir.
3.4. Sorgu
Sorgu bileşeni, yol bileşenindeki (Bölüm 3.3) verilerle birlikte, URI'nin düzeni ve adlandırma yetkisi (varsa) kapsamındaki bir kaynağı tanımlamaya yarayan hiyerarşik olmayan veriler içerir. ...
... Ancak, sorgu bileşenleri genellikle "anahtar = değer" çiftleri şeklinde tanımlayıcı bilgileri taşımak için kullanıldığından ve sık kullanılan bir değer başka bir URI'ye referanstır, ...
HTML , HTTP GET aracılığıyla gönderilen bir formun, form değerlerini "? Key1 = value1 & key2 = value2 ..." (düzgün şekilde kodlanmış) biçiminde ad-değer çiftleri olarak kodlaması gerektiğini belirler. Sorgu dizesinin ayrıştırılması sunucu tarafı koda bağlıdır (örn. Java sunucu uygulaması motoru).
Varsa, hangi sunucu tarafı çerçevesini kullandığınızı belirlemezsiniz, ancak sunucu tarafı çerçevenizin sorgu dizesinin her zaman ad-değer çiftlerinde olacağını varsayabilir ve olmayan bir sorgu dizesini boğabilir bu biçimde (ör. ?bar
). Sorgu dizesini ayrıştıran kendi özel kodunuz varsa, yalnızca bu sorgu dizesi biçimini işlediğinizden emin olmanız gerekir. Bir çerçeve ise, belgelerinize bakmanız veya nasıl işlendiğini görmek için test etmeniz gerekir.
isindex
Sihirli name
HTML5 anahtar-değer biçimi olmadan bir sorgu dizesi göndermeyi sağlar stackoverflow.com/a/37579004/895245
Tamamen geçerli. Onları mafya habercisinin arkasında sessizce duran büyük kaslı adamın eşdeğeri olarak düşünebilirsiniz. Adamın bir adı yok ve konuşmuyor, ama sadece varlığı bilgi taşıyor.
"" Http "şeması, HTTP protokolü aracılığıyla ağ kaynaklarını bulmak için kullanılır. Bu bölüm, http URL'lerinin şemaya özel sözdizimini ve semantiği tanımlar." http://www.w3.org/Protocols/rfc2616/rfc2616.html
http_URL = "http:" "//" host [ ":" port ] [ abs_path [ "?" query ]]
Evet, soru işaretinden sonra her şey geçerli. Sunucunuz farklı şekilde yorumlayabilir, ancak anekdot olarak , bazı dillerin listelenmişse doğru olan bir boolean değeri olarak kabul edildiğini görebilirsiniz.
URI spesifikasyonunun tek ilgili kısmı , ilk ve birincisi arasındaki her şeyin spesifikasyonun bir sorgu tanımına uymasını bilmektir . Gibi herhangi bir karakter içerebilir . Bu , veya gibi bir sorgu dizesinin geçerli olduğu anlamına gelir .?
#
[:/.?]
?bar
?ten+green+apples
RFC 3986'yı burada bulun
isindex
anlamlı bir şekilde HTML5 değildir.
Yalnızca formdaki ilk öğe olarak kullanımdan kaldırılmıştır ve adsız olarak gönderilir.
Girdinin adı "isindex" ise, türü "metin" dir ve bu form veri kümesindeki ilk girdidir, ardından sonuca değeri ekleyin ve bu girdinin diğer alt adımlarını atlayarak bir sonrakine geçin. varsa giriş veya aksi takdirde genel algoritmanın bir sonraki adımı.
İsindex bayrağı yalnızca eski kullanım içindir. HTML belgelerine uyma biçimindeki formlar, bu işaret kümesiyle kodu çözülmesi gereken yükler oluşturmaz.
İsindex en son desteklendiğinde HTML3 oldu . HTML5'te kullanımı geriye dönük uyumluluğu kolaylaştırmaktır.
Bu URI biçimi için kütüphanelerde verilen destek değişiklik gösterir, ancak bazı kütüphaneler kullanımı kolaylaştırmak için eski destek sağlar isindex
.
Perl URI'si gibi bazı kütüphaneler bu tür yapıları ayrıştırma yöntemleri sunar
$uri->query_keywords
$uri->query_keywords( $keywords, ... )
$uri->query_keywords( \@keywords )
Sets and returns query components that use the keywords separated by "+" format.
url
(özel destek yok)Çok daha sık bir başka örnek olarak, node.js
normal rotayı alır ve
parseQueryString
)Buna benzer bir şey izleyen diğer URI ayrıştırma API'lerinin çoğu.
parse_url
, benzer bir uygulama olarak izler, ancak yalnızca sorgu için dize döndürür. Bir nesneye ayrıştırma k=>v
gerektirirparse_string()
Geçerli: bkz. Wikipedia , RFC 1738 (3.3. HTTP) , RFC 3986 (3. Sözdizimi Bileşenleri) .
isindex
name
HTML5'ten kullanımdan kaldırılmış sihir
Kullanımdan kaldırılan bu özellik, form gönderiminin böyle bir URL oluşturmasına izin vererek HTML için geçerli olduğuna dair daha fazla kanıt sunar. Örneğin:
<form action="#isindex" class="border" id="isindex" method="get">
<input type="text" name="isindex" value="bar"/>
<button type="submit">Submit</button>
</form>
türünde bir URL oluşturur:
?bar
Standart: https://www.w3.org/TR/html5/forms.html#naming-form-controls:-the-name-attribute
isindex
ancak şu adreste belirtildiği gibi kullanımdan kaldırılmıştır: https://stackoverflow.com/a/41689431/895245
Diğer tüm cevapların açıkladığı gibi, özellikle boole tür şeyler için kontrol için mükemmel bir şekilde geçerlidir
Sorgu dizesini ada göre almak için basit bir işlev:
function getParameterByName(name, url) {
if (!url) {
url = window.location.href;
}
name = name.replace(/[\[\]]/g, "\\$&");
var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
results = regex.exec(url);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g, " "));
}
ve şimdi aradığınız sorgu dizesinin mevcut olup olmadığını kontrol etmek istiyorsanız, aşağıdaki gibi basit bir şey yapabilirsiniz:
var exampleQueryString = (getParameterByName('exampleQueryString') != null);
exampleQueryString
olacak false
işlev sorgu dizesi bulamazsa başka türlü olacak true
.