ما هي أسهل طريقة لقراءة/معالجة معلمات سلسلة الاستعلام باستخدام جافا سكريبت؟

StackOverflow https://stackoverflow.com/questions/150404

  •  02-07-2019
  •  | 
  •  

سؤال

تبدو الأمثلة التي رأيتها عبر الإنترنت أكثر تعقيدًا مما توقعت (تحليل &/?/= يدويًا إلى أزواج، باستخدام التعبيرات العادية، وما إلى ذلك). نحن نستخدم asp.net اياكس (لا ترى أي شيء في المرجع من جانب العميل) وسوف تفكر في إضافة jQuery إذا كان ذلك سيساعد حقًا.

أعتقد أن هناك حلاً أكثر أناقة - حتى الآن هذا هو أفضل رمز وجدته ولكني أرغب في العثور على شيء أكثر على غرار كائن HttpRequest.QueryString (جانب خادم asp.net).شكرا لك مقدما،

شين

هل كانت مفيدة؟

المحلول

هناك بالفعل أ البرنامج المساعد QueryString بالنسبة لـ jQuery، إذا كنت ترغب في تثبيت jQuery الأساسي والمكون الإضافي، فقد يكون ذلك مفيدًا.

نصائح أخرى

أنا أستخدم هذه الوظيفة في حالة عدم رغبتي في استخدام مكون إضافي:

function getQueryVariable(variable) {
    var query = window.location.search.substring(1);
    var vars = query.split("&");
    for (var i = 0; i < vars.length; i++) {
        var pair = vars[i].split("=");
        if (pair[0] == variable) {
            return pair[1];
        }
    }
    return null;
}

ألقِ نظرة على رسالتي، فهي تخبرك بالضبط بكيفية القيام بذلك:

http://seattlesoftware.wordpress.com/2008/01/16/javascript-query-string/

بالنسبة لـ jQuery أقترح مسج شواء:زر الرجوع ومكتبة الاستعلامات بقلم "كاوبوي" بن ألمان

تقوم JQuery BBQ بتعزيز حدث HTML5 HashChange للسماح بتاريخ #Hash بسيط وقوي.بالإضافة إلى ذلك ، توفر JQuery BBQ طريقة كاملة .Deparam () ، إلى جانب كل من إدارة حالة التجزئة ، وأساليب سلسلة الأداة المساعدة للتجزئة / الاستعلام.

مثال:

// Parse URL, deserializing query string into an object.
// http://www.example.com/foo.php?a=1&b=2&c=hello#test
// search is set to ?a=1&b=2&c=hello
// myObj is set to { a:"1", b:"2", c:"hello" }
var search = window.location.search;
var myObj = $.deparam.querystring( search );

استخدم الأداة المساعدة String من Prototypejs.org، والتي تسمى toQueryParams().

مثال من موقعهم: http://prototypejs.org/api/string/toQueryParams

'section=blog&id=45'.toQueryParams();
// -> {القسم:معرف "المدونة":'45'}

'section=blog;id=45'.toQueryParams();
// -> {القسم:معرف "المدونة":'45'}

'http://www.example.com?section=blog&id=45#comments'.toQueryParams();
// -> {القسم:معرف "المدونة":'45'}

'section=blog&tag=javascript&tag=prototype&tag=doc'.toQueryParams();
// -> {القسم:"مدونة"، الوسم:['جافا سكريبت'، 'النموذج الأولي'، 'doc']}

'tag=Ruby%20on%20rails'.toQueryParams();
// -> {العلامة:'روبي على القضبان'}

'id=45&raw'.toQueryParams();
// -> {المعرف:'45' الخام:غير معرف}

يمكنك أيضًا استخدام الاسم المستعار parseQuery() للحصول على نفس النتائج.

window.location.search.parseQuery();

بما أن window.location تُرجع كائنًا، فيجب عليك الحصول على السلسلة.

  *$(document).ready(function () {
            $("#a").click(function () {
                window.location.href = "secondpage.aspx?id='0' & name='sunil'& add='asr' & phone='1234'";
            });
        });*


**then read the query string parameters on another using split method . Here as follows:**


  *$(document).ready(function () {
            var a = decodeURI(window.location.search);
            var id = window.location.search = "id=" + $().val();
            var name = a.split("name=")[1].split("&")[0].split("'")[1];
            var phone = a.split("phone=")[1].split("&")[0].split("'")[1];
            var add = a.split("add=")[1].split("&")[0].split("'")[1];
            alert(id+','+name+','+add+','+phone); 
        });*

إذا كان هناك أي احتمال لمواجهة معلمات متكررة (على سبيل المثال.?tag=foo&tag=bar)، لن تكون معظم المكتبات كافية.في هذه الحالة، قد ترغب في النظر في هذه المكتبة التي قمت بتطويرها من مكتبة جان وولتر محلل شامل جدا.لقد أضفت وظائف .plus() و .minus() والرحلة الدائرية:

https://github.com/timmc/js-tools/blob/master/src/QueryString.js

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top