فئة ASP مع JavaScript - تعامل مع الحالة عندما تكون معلمة الاستعلام في Request.QueryString مفقودة [مكررة]

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

  •  12-12-2019
  •  | 
  •  

سؤال

التكرار المحتمل:
معرفة ما إذا كانت معلمة URL موجودة في JS-ASP

قد يكون هذا أساسيًا جدًا، ولكن،

في الكود أدناه، يهدف فرع if إلى تغطية الموقف غير الطبيعي الذي يفتقد فيه طلب الضرب معلمة الاستعلام الخاصة بـ "الاسم"، مثل http://foo.com/bar.asp?foo=bar

<%@ language="javascript" %>

<html>
<head>
    <title>Hello ASP!</title>
</head>
<body>
    <%
        if (Request.QueryString("name") == undefined)
        {
            Response.Write("oops, give me your name!");
        }
        else
        {
            Response.Write("Hello " + Request.QueryString("name") + "!");
        }
    %>
</body>
</html>

ولكن لم يتم إدخال فرع if مطلقًا.الفرع الآخر يحدث في كل مرة، وحصلت على "مرحبا غير محدد!" كل مرة.

لقد حاولت استبدال غير المحدد بـ "" أو باطل, ولكن لا شيء يتغير.

لقد بحثت ولكن حصلت على أشياء تتحدث عن ASP.NET/C# وJavaScript من جانب العميل.نقدر مساعدتكم!

محدث:
مرحبا يا شباب، شكرا لاهتمامكم!ولكن أعني أن ASP يستفيد من JavaScript للقيام بالبرمجة من جانب الخادم.لقد قمت بتحديث الرموز أعلاه.

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

المحلول

الطريقة الأكثر موثوقية للتحقق مما إذا تم تمرير المعلمة أم لا هي التحقق من Count ملكية:

if (Request.QueryString("name").Count === 0) {
    // do whatever...
}

هذا يعمل بسبب Request.QueryString(var) في الواقع تُرجع كائنًا يشبه المصفوفة يحتوي على قيم متعددة، إذا تم تحديد نفس المعلمة عدة مرات في عنوان URL (على سبيل المثال، http://example.com/test.asp?name=value1&name=value2).يمكنك قراءة المزيد في وثائق MSDN:

http://msdn.microsoft.com/en-us/library/ms524784%28VS.90%29.aspx

نصائح أخرى

ربما هذا من شأنه أن يصلح لك:

<script type="text/javascript">
// access the server-side response 
// and store it in a javascript variable
var myQueryString = '<%= Request.QueryString("name") %>';

// now write to the document using javascript only
if (myQueryString === "" ) {
   document.write("oops, give me your name!");
} else {
   document.write("Hello " + myQueryString + "!");
}
</script>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top