أنت تطّلع على مستندات Apigee Edge.
انتقل إلى
مستندات Apigee X. معلومات
ScriptExecutionFailed
رمز الخطأ
steps.javascript.ScriptExecutionFailed
نص الاستجابة للخطأ
{ "fault": { "faultstring": "Execution of javascript_policy_name failed with error: error_type: error_description. (javascript_source_file_name)\"", "detail": { "errorcode": "steps.javascript.ScriptExecutionFailed" } } }
أنواع الأخطاء والأسباب المحتملة
يمكن أن تؤدي سياسة JavaScript إلى حدوث العديد من الأنواع المختلفة من أخطاء ScriptExecutionFound (تعذّر تنفيذ النص البرمجي). تم سرد بعض الأخطاء الأكثر شيوعًا في الجدول أدناه:
نوع الخطأ | السبب |
خطأ في النطاق | يتم عرض RangeError إذا كنت تستخدم رقمًا خارج نطاق القيم القانونية. |
خطأ في المرجع | يتم عرض ReferenceError إذا كنت تستخدم (reference) متغيّرًا لم يتم تعريفه. |
خطأ في البنية | يتم طرح SyntaxError إذا حاولت تقييم رمز يتضمّن خطأ في البنية. |
خطأ في الكتابة | يتم طرح خطأ TypeError في حال استخدام عملية خارج نطاق الأنواع المتوقّعة. |
خطأ في معرف الموارد المنتظم (URI) | يتم عرض URIError إذا كنت تستخدم أحرفًا غير مقبولة في إحدى وظائف معرّف الموارد المنتظم (URI). |
خطأ في النطاق
يحدث نوع الخطأ RangeError
عند العمل على قيمة أو تمرير قيمة
إلى دالة غير موجودة في مجموعة القيم المسموح بها أو نطاقها.
على سبيل المثال، يحدث هذا الخطأ في الحالات التالية:
- إذا كنت تستخدم تاريخًا غير صالح، مثل 31 أيلول (سبتمبر) 2018 مع بعض واجهات برمجة التطبيقات لتحديد التاريخ
- إذا قمت بتمرير قيمة غير صالحة إلى طرق رقمية مثل
Number.toPrecision()
أوNumber.tofixed()
أوNumber.toExponential()
. على سبيل المثال، لنفترض أنك مررت قيمة كبيرة مثل 400 أو 500 في الطريقةNumber.toPrecision()
، سيظهر لك خطأ في النطاق. - إذا أنشأت صفيفًا بطول غير قانوني
نص استجابة الخطأ
{ "fault": { "faultstring": "Execution of javascript_policy_name failed with error: Javascript runtime error: \"RangeError: error_description. (javascript_source_file_name:line_number)\"", "detail": { "errorcode": "steps.javascript.ScriptExecutionFailed" } } }
ملاحظة: يعتمد تشخيص أخطاء النطاق وحلّها على رسالة الخطأ الدقيقة التي ظهرت في سياسة JavaScript. فيما يلي وصفان كمثالين كمرجع لك.
المثال 1: تاريخ غير صالح
مثال على نص استجابة الخطأ
{
"fault": {
"faultstring": "Execution of ParseDate failed with error: Javascript runtime error: \"RangeError: Date is invalid. (ParseDate.js:2)\"",
"detail": {
"errorcode": "steps.javascript.ScriptExecutionFailed"
}
}
}
التشخيص
حدِّد سياسة JavaScript وملف المصدر الخاص بها ورقم السطر الذي حدث فيه الخطأ ووصفه. يمكنك العثور على كل هذه المعلومات في العنصر
faultstring
الخاص باستجابة الخطأ. على سبيل المثال، فيfaultstring
التالي، اسم سياسة JavaScript هوParseDate
، وملف مصدر JavaScript هوParseDate.js
، ورقم السطر الذي حدث فيه الخطأ2
، ووصف الخطأ هوDate is invalid
:"faultstring": "Execution of ParseDate failed with error: Javascript runtime error: \"RangeError: Date is invalid. (ParseDate.js:2)\""
راجِع ملف JavaScript المصدر (الذي تم تحديده في الخطوة 1 أعلاه) وتحقّق مما إذا كان هناك تاريخ غير صالح يتم استخدامه في رقم السطر المحدّد في الخطأ أو ما إذا كان المتغيّر المستخدَم في رقم السطر يتضمّن تاريخًا غير صالح. إذا تم استخدام تاريخ غير صالح، هذا هو سبب الخطأ.
في ما يلي نموذج لملف JavaScript المصدر الذي يؤدي إلى هذا الخطأ:
ParseDate.js
var date = new Date('2018-09-31T11:19:08.402Z'); date.toISOString();
في هذا المثال، هناك متغير
date
مستخدَم في السطر رقم 2. عند فحص ملف المصدر، ستلاحظ أنّه قد تم ضبط المتغيّرdate
على تاريخ غير صالح:2018-09-31T11:19:08.402Z.
هذا التاريخ غير صالح لأنّ أيلول (سبتمبر) لا يتضمّن 31 يومًا.ملاحظة: إليك تنسيق ISO-8601 المستخدَم في هذا المثال:
YYYY-MM-DDTHH:mm:ss.sssZ
الدقة
تأكَّد من استخدام تاريخ صالح دائمًا أثناء استخدام واجهات برمجة تطبيقات التاريخ في رمز JavaScript.
لحلّ مشكلة رمز JavaScript الوارد أعلاه، يمكنك ضبط التاريخ على Sept 30 2018
كما هو موضّح أدناه:
var date = new Date('2018-09-30T11:19:08.402Z');
date.toISOString();
المثال 2: تم تمرير رقم غير صالح إلى واجهات برمجة التطبيقات Precision API
مثال على نص استجابة الخطأ
{
"fault": {
"faultstring": "Execution of SetNumberPrecision failed with error: Javascript runtime error: "RangeError: Precision 400 out of range. (SetNumberPrecision.js:2)\"",
"detail": {
"errorcode": "steps.javascript.ScriptExecutionFailed"
}
}
}
التشخيص
حدِّد سياسة JavaScript وملف المصدر الخاص بها ورقم السطر الذي حدث فيه الخطأ ووصف الخطأ. يمكنك العثور على كل هذه المعلومات في العنصر
faultstring
الخاص باستجابة الخطأ. على سبيل المثال، فيfaultstring
التالي، اسم سياسة JavaScript هوSetNumberPrecision
، وملف مصدر JavaScript هوSetNumberPrecision.js
، ورقم السطر الذي حدث فيه الخطأ هو 2، ووصف الخطأ هوPrecision 400 out of range.
."faultstring": "Execution of SetNumberPrecision failed with error: Javascript runtime error: "RangeError: Precision 400 out of range. (SetNumberPrecision.js:2)\""
افحص ملف مصدر JavaScript (الذي تم تحديده في الخطوة رقم 1 أعلاه). إذا تم استخدام العدد الكبير المذكور كجزء من وصف الخطأ في رقم السطر المحدّد، يكون هذا هو سبب الخطأ.
في ما يلي نموذج لملف JavaScript المصدر الذي يؤدي إلى هذا الخطأ:
SetNumberPrecision.js
var number = 12.3456; var rounded_number = number.toPrecision(400); print("rounded_number = " + rounded_number);
في هذا المثال، لاحظ أنه يتم استخدام قيمة كبيرة 400 في السطر رقم 2. ونظرًا لأنه لا يمكنك ضبط الدقة على هذا العدد الكبير من الأرقام، سيظهر لك الخطأ التالي:
"faultstring": "Execution of SetNumberPrecision failed with error: Javascript runtime error: "RangeError: Precision 400 out of range. (SetNumberPrecision.js:2)\""
الدقة
تأكَّد من أنّ الرقم المستخدَم في الإجراء toPrecision()
ضمن مجموعة القيم المسموح بها.
لحلّ المشكلة في مثال JavaScript الموضّح أعلاه، اضبط عدد الأرقام المعنوية على رقمَين صالحَين:
var number = 12.3456;
var rounded_number = number.toPrecision(2);
print("rounded_number = " + rounded_number);
خطأ في المرجع
يحدث نوع الخطأ ReferenceError
عند حدوث متغيّر غير معروف في JavaScript
يتم استخدامها (المشار إليها) أو تشغيلها عليها.
نص استجابة الخطأ
{ "fault": { "faultstring": "Execution of javascript_policy_name failed with error: Javascript runtime error: \"ReferenceError: variable_name is not defined. (javascript_source_file_name:line_number)\"", "detail": { "errorcode": "steps.javascript.ScriptExecutionFailed" } } }
مثال على نص استجابة الخطأ
{
"fault": {
"faultstring": "Execution of ComputeTotalPrice failed with error: Javascript runtime error: \"ReferenceError: \"price\" is not defined. (ComputeTotalPrice.js:3)\"",
"detail": {
"errorcode": "steps.javascript.ScriptExecutionFailed"
}
}
}
التشخيص
حدِّد سياسة JavaScript وملف المصدر ورقم السطر الذي تتم الإشارة فيه إلى المتغيّر غير المحدّد. يمكنك العثور على كل هذه المعلومات في عنصر
faultstring
من استجابة الخطأ. على سبيل المثال، فيfaultstring
التالي، يكون اسم سياسة JavaScript هوComputeTotalPrice
، وملف المصدر المقابل هوComputeTotalPrice.js
، ورقم السطر الذي حدث فيه الخطأ3
، واسم المتغيّر غير المحدّد هوprice.
."faultstring": "Execution of ComputeTotalPrice failed with error: Javascript runtime error: \"ReferenceError: \"price\" is not defined. (ComputeTotalPrice.js:3)\""
افحص رقم السطر في ملف JavaScript المصدر وتحقَّق مما إذا كانت الإحالة إلى المتغيّر غير المحدَّد المحدّد في الخطوة رقم 1 أعلاه. على سبيل المثال، يشير رمز JavaScript التالي إلى المتغير غير المحدّد
price
في السطر 3، والذي يتطابق مع ما في سلسلة الخطأ:ComputeTotalPrice.js
var item = context.getVariable("request.queryparam.item"); var quantity = context.getVariable("request.queryparam.quantity"); var totalprice = parseInt(quantity) * parseInt(price); context.setVariable("TotalPrice", totalprice);
تحقَّق مما إذا كان المتغيّر المعيّن محدّدًا في رمز JavaScript. إذا لم يتم تحديد المتغيّر، هذا هو سبب الخطأ.
في مثال النص البرمجي الوارد أعلاه، يتمّ استخدام متغيّر
price
غير المعلَن أو المحدّد. لذلك، سيظهر لك الخطأ التالي:"faultstring": "Execution of ComputeTotalPrice failed with error: Javascript runtime error: \"ReferenceError: \"price\" is not defined. (ComputeTotalPrice.js:3)\""
الدقة
تأكَّد من أنّه تم تحديد جميع المتغيرات المشار إليها في رمز JavaScript بشكل صحيح.
لحلّ المشكلة في مثال JavaScript المعروض أعلاه، حدِّد السعر المتغيّر قبل استخدامه. على سبيل المثال:
var item = context.getVariable("request.queryparam.item");
var quantity = context.getVariable("request.queryparam.quantity");
var price = context.getVariable("request.queryparam.price");
var totalprice = parseInt(quantity) * parseInt(price);
context.setVariable("TotalPrice", totalprice);
خطأ في البنية
يتم عرض نوع الخطأ SyntaxError
عندما يصادف محرّك JavaScript رموزًا مميّزة.
أو ترتيب الرمز المميز الذي لا يتوافق مع بنية اللغة، أو عندما تكون القيمة
يتم تمرير إدخال التنسيق إلى واجهات برمجة تطبيقات المحلل، مثل تحليل JSON/XML.
على سبيل المثال، إذا نقلت حمولة JSON غير صالحة أو مكتوبة بشكل غير صحيح كإدخال إلى واجهة برمجة تطبيقات JSON.parse
المُستخدَمة في سياسة JavaScript، سيظهر لك هذا الخطأ.
نص استجابة الخطأ
{ "fault": { "faultstring": "Execution of javascript_policy_name failed with error: Javascript runtime error: \"SyntaxError: error_description. (javascript_source_file_name:line_number)\"", "detail": { "errorcode": "steps.javascript.ScriptExecutionFailed" } } }
مثال على نص استجابة الخطأ
{
"fault": {
"faultstring": "Execution of ParseJSONRequest failed with error: Javascript runtime error: \"SyntaxError: Unexpected token: <. (ParseJSONRequest.js:2)\"",
"detail": {
"errorcode": "steps.javascript.ScriptExecutionFailed"
}
}
}
التشخيص
حدِّد سياسة JavaScript وملف المصدر الخاص بها ورقم السطر الذي حدث فيه الخطأ ووصف الخطأ. يمكنك العثور على كل هذه المعلومات في عنصر
faultstring
من استجابة الخطأ. على سبيل المثال، فيfaultstring
التالي، اسم سياسة JavaScript هوParseJSONRequest
، وملف مصدر JavaScript هوParseJSONRequest.js
، ورقم السطر الذي حدث فيه الخطأ هو2
، ووصف الخطأ هوUnexpected token
:"faultstring": "Execution of ParseJSONRequest failed with error: Javascript runtime error: \"SyntaxError: Unexpected token: <. (ParseJSONRequest.js:2)\""
افحص السطر رقم 2 في ملف مصدر JavaScript (الذي تم تحديده في الخطوة رقم 1 أعلاه) وتحقَّق من العملية التي يتم إجراؤها. إذا تم تنفيذ دالة
JSON.parse()
، تأكَّد من مَعلمة الإدخال التي تم تمريرها إليها. إذا كانت معلَمة الإدخال غير صالحة أو كانت بتنسيق JSON مكتوبًا بشكلٍ غير صحيح، هذا هو سبب الخطأ.في ما يلي نموذج لشفرة JavaScript تؤدي إلى هذا الخطأ:
var input = context.getVariable("request.content"); var result = JSON.parse(input);
في هذا المثال، يتم استخدام حمولة الطلب (
request.content
) التي تم تمريرها إلى الخادم الوكيل لواجهة برمجة التطبيقات كإدخال في الدالةJSON.parse()
.في ما يلي نموذج لطلب بيانات من واجهة برمجة التطبيقات يوضِّح كيفية تمرير الطلب:
curl -v "http://<org>-<env>.apigee.net/v1/js-demo" -H "Content-Type: application/json" -X POST -d '<city>Bangalore</city>'
في الطلب أعلاه، يتم تمرير حمولة XML التالية إلى خادم وكيل واجهة برمجة التطبيقات
<city>Bangalore</city>
تتوقّع واجهة برمجة التطبيقاتJSON.parse
أن يتم تمرير ملف JSON صالح، ولكن بسبب تمرير حمولة XML بدلاً من ذلك، تؤدي إلى ظهور الخطأ التالي:"Execution of ParseJSONRequest failed with error: Javascript runtime error: \"SyntaxError: Unexpected token: <. (ParseJSONRequest.js:2)\""
الدقة
تأكَّد من تمرير إدخال صالح إلى واجهات برمجة التطبيقات للتحليل المستخدَمة في رمز JavaScript.
لحلّ المشكلة في نموذج السياسة المذكور أعلاه، يجب إرسال طلب حِمل JSON صالح على النحو التالي:
curl -v "http://<org>-<env>.apigee.net/v1/js-demo" -H "Content-Type: application/json" -X POST -d '{"city" : "Bangalore"}'
خطأ في النوع
يحدث نوع الخطأ TypeError
في الحالات التالية:
- إذا كان الم Operand أو الوسيطة التي تم تمريرها إلى دالة غير متوافقَين مع النوع المتوقّع من عامل التشغيل أو الدالة
- يتم استدعاء دالة على كائن فارغ أو غير محدد أو غير صحيح.
- يتم الوصول إلى الخاصية من كائن فارغ أو غير محدد أو غير صحيح.
على سبيل المثال، حدث خطأ في النوع:
- إذا حاولت استدعاء الدالة
toUpperCase()
على رقم ما. هذا هو لأنه يمكن استدعاء الدالةtoUpperCase()
على كائنات السلسلة فقط. - إذا حاولت قراءة سمة من كائن فارغ أو غير معرَّف.
نص استجابة الخطأ
{ "fault": { "faultstring": "Execution of javascript_policy_name failed with error: Javascript runtime error: \"TypeError: error_description. (javascript_source_file_name:line_number)\"", "detail": { "errorcode": "steps.javascript.ScriptExecutionFailed" } } }
المثال 1: استدعاء دالة على الكائن الخطأ
إذا حاولت استدعاء دالة على عنصر غير متوافق، ستظهر لك رسالة الخطأ هذه.
على سبيل المثال، إذا حاولت استدعاء الدالة toUpperCase()
على رقم تحصل عليه
الخطأ. وذلك لأنه لا يمكن استدعاء الدالة toUpperCase()
إلا على
كائنات السلسلة.
مثال على نص استجابة الخطأ
{
"fault": {
"faultstring": "Execution of ConvertToUpperCase failed with error: Javascript runtime error: \"TypeError: Cannot find function toUpperCase in object 100. (ConvertToUpperCase.js:2)\"",
"detail": {
"errorcode": "steps.javascript.ScriptExecutionFailed"
}
}
}
التشخيص
حدِّد سياسة JavaScript وملف المصدر الخاص بها ورقم السطر الذي حدث فيه الخطأ ووصف الخطأ. يمكنك العثور على كل هذه المعلومات في العنصر
faultstring
الخاص باستجابة الخطأ. على سبيل المثال، فيfaultstring
التالي، اسم سياسة JavaScript هوConvertToUpperCase
والملف المصدر هوConvertToUpperCase.js
ورقم السطر2
ووصف الخطأ هو **Cannot find function toUpperCase in object 100.
."faultstring": "Execution of ConvertToUpperCase failed with error: Javascript runtime error: \"TypeError: Cannot find function toUpperCase in object 100. (ConvertToUpperCase.js:2)\""
يشير وصف الخطأ إلى أنّك تستدعي الدالة
toUpperCase()
على عنصر قيمته الرقمية 100.افحص ملف المصدر JavaScript وتأكد من استدعاء الدالة
toUpperCase()
في كائن قيمته الرقمية 100 في السطر رقم 2 (الموضح في الخطوة رقم 1 أعلاه). إذا كانت الإجابة بنعم، فهذا هو سبب الخطأ.في ما يلي نموذج لملف JavaScript المصدر الذي يؤدي إلى هذا الخطأ:
ConvertToUpperCase.js
var number = 100; var result = number.toUpperCase();
في رمز JavaScript المعروض أعلاه، تمّ ضبط المتغيّر
number
على قيمة 100. وبالتالي، يتم استدعاء الدالةtoUpperCase()(
في كائن الرقم. بما أنّه لا يمكن استدعاء الدالةtoUpperCase()
إلا على عناصر السلاسل، يظهر لك الخطأ التالي:"Execution of ConvertToUpperCase failed with error: Javascript runtime error: \"TypeError: Cannot find function toUpperCase in object 100. (ConvertToUpperCase.js:2)\""
الدقة
استخدِم دائمًا الدوال مثل toUpperCase()
على العناصر الصالحة.
لتصحيح المثال أعلاه، يمكنك إنشاء متغيّر سلسلة ثم استدعاء دالة toUpperCase()
على سلسلة:
var text = "Hello Apigee !";
var result = text.toUpperCase();
المثال 2: لا يمكن قراءة السمة من عنصر غير محدّد
إذا حاولت الوصول إلى/قراءة خاصية من كائن غير محدد، فستحصل على هذا الخطأ. على سبيل المثال، يمكن أن يحدث هذا الخطأ عند محاولة الوصول إلى البيانات من عنصر في صفيف، ولكن العنصر غير محدّد. الاطّلاع على الشرح التفصيلي أدناه.
مثال على نص استجابة الخطأ
{
"fault": {
"faultstring": "Execution of ParseJSONResponse failed with error: Javascript runtime error: \"TypeError: Cannot read property \"length\" from undefined. (ParseJSONResponse.js:7)\"",
"detail": {
"errorcode": "steps.javascript.ScriptExecutionFailed"
}
}
}
التشخيص
حدِّد سياسة JavaScript وملف المصدر الخاص بها ورقم السطر الذي حدث فيه الخطأ ووصفه. يمكنك العثور على كل هذه المعلومات في العنصر
faultstring
الخاص باستجابة الخطأ. على سبيل المثال، فيfaultstring
التالي، يكون اسم السياسة هوParseJSONResponse
والملف المصدر هوParseJSONResponse.js
ورقم السطر6
ووصف الخطأ هوCannot read property "length" from undefined
."faultstring": "Execution of ParseJSONResponse failed with error: Javascript runtime error: \"TypeError: Cannot read property \"length\" from undefined. (ParseJSONResponse.js:6)\""
يشير الخطأ إلى أنّه لا يمكن قراءة السمة length من عنصر غير محدّد.
افحص رقم السطر في ملف JavaScript المصدر (الذي تم تحديده في الخطوة رقم 1 أعلاه) وتحقَّق مما إذا كان العنصر يحتوي على قيمة صالحة أو غير محدّد. قد تحتاج إلى قراءة وفهم ملف المصدر الكامل لتحديد الطريقة التي تم بها تعريف الكائن المعين أو اشتقاقه وتحديد سبب عدم تعريف الكائن. إذا تبيّن لك أنّ العنصر المحدّد غير محدّد وأنّك تحاول الوصول إلى طول السمة منه، هذا هو سبب الخطأ.
لنلقِ نظرة على مثال لفهم هذه المشكلة بشكل أفضل:
لنفترض أنّك تتلقّى استجابة JSON التالية من خادم الخلفية:
{ "cars": [ { "name":"Toyota", "count": 150 } { "name":"Honda", "count": 100 }, { "name":"Ford", "count": 75 } ] }
إليك نموذج ملف مصدر JavaScript الذي يحلّل استجابة JSON هذه إلى الخطأ المذكور أعلاه:
ParseJSONResponse.js
// Get the JSON response var jsonData = context.getVariable("response.content"); print (jsonData); // Read the cars array for (var i = 0; i < jsonData.cars.length; i++) { print("name = " + jsonData.cars[i].name); print("count = " + jsonData.cars[i].count); }
عند فحص رمز JavaScript بعناية، يمكنك ملاحظة أنّه في السطر رقم 2، يتم قراءة/تخزين
response.content
في المتغيّرjsonData
كسلسلة عادية (بين علامتَي اقتباس).بما أنّ
jsonData
سلسلة عادية، عند محاولة الوصول إلىcars
منjsonData
، سيكون (jsonData.cars
) غير محدّد.بعد ذلك، عند محاولة قراءة السمة
length
منjsonData.cars
، التي لم يتم تحديدها، ستظهر لك رسالة الخطأ التالية:"faultstring": "Execution of ParseJSONResponse failed with error: Javascript runtime error: \"TypeError: Cannot read property \"length\" from undefined. (ParseJSONResponse.js:6)\""
الدقة
احرِص على قراءة بيانات JSON دائمًا ككائن JSON باستخدام واجهات برمجة التطبيقات ذات الصلة بتنسيق JSON.
لإصلاح مثال JavaScript الموضّح أعلاه، يمكنك استخدام الدالة JSON.parse()
في كائن response.content
للحصول عليه ككائن JSON. بعد ذلك، يمكنك
الوصول إلى مصفوفة cars
وتكرارها من خلال المصفوفة بنجاح.
// Get the JSON response
var data = context.getVariable("response.content");
var jsonData = JSON.parse(data);
print (jsonData);
// Read the cars array
for (var i = 0; i < jsonData.cars.length; i++)
{
print("name = " + jsonData.cars[i].name);
print("count = " + jsonData.cars[i].count);
}
خطأ في عنوان URL
يتم طرح نوع الخطأ URIError
في حال استخدام أحرف غير مقبولة في دالة معرّف الموارد المنتظم (URI).
على سبيل المثال، إذا مرّرت معرف موارد منتظم (URI) به رمز نسبة مئوية إلى decodeURI
أو
decodeURIComponent
، وعندئذٍ ستحصل على هذا الخطأ.
نص استجابة الخطأ
{ "fault": { "faultstring": "Execution of javascript_policy_name failed with error: Javascript runtime error: \"URIError: error_description. (javascript_source_file_name:line_number)\"", "detail": { "errorcode": "steps.javascript.ScriptExecutionFailed" } } }
مثال على نص استجابة الخطأ
{
"fault": {
"faultstring": "Execution of URIDecode failed with error: Javascript runtime error: \"URIError: Malformed URI sequence. (URIDecode.js:2)\"",
"detail": {
"errorcode": "steps.javascript.ScriptExecutionFailed"
}
}
}
التشخيص
حدِّد سياسة JavaScript، وملف المصدر الخاص بها، ورقم السطر الذي حدث الخطأ، ووصف الخطأ. يمكنك العثور على كل هذه المعلومات في عنصر سلسلة الخطأ في استجابة الخطأ. على سبيل المثال، في السلسلة التالية faultstring، اسم سياسة JavaScript هو
URIDecode</code
وملف مصدر JavaScript هوURIDecode.js
ورقم السطر هو2
ووصف الخطأ هوMalformed URI sequence
:"faultstring": "Execution of URIDecode failed with error: Javascript runtime error: \"URIError: Malformed URI sequence. (URIDecode.js:2)\""
يشير وصف الخطأ إلى أنه يتم استخدام تسلسل معرف موارد منتظم (URI) مكتوب بشكل غير صحيح في السطر رقم 2 من
URIDecode.js
.افحص ملف مصدر JavaScript وتحقَّق مما إذا كانت الوسيطة التي تم تمريرها إلى أي من وظائف معرِّف الموارد المنتظم (URI) تحتوي على أي أحرف غير مقبولة. إذا كانت الإجابة "نعم"، هذا هو سبب الخطأ.
في ما يلي مثال على ملف مصدر JavaScript يؤدي إلى ظهور هذا الخطأ:
URIDecode.js
var str = "75%-Completed"; var decoded_str = decodeURIComponent(str); context.setVariable("decoded_str", decoded_str);
في مثال رمز JavaScript المعروض أعلاه، يتضمّن المتغيّر
str
الذي تم تمريره إلىdecodeURIComponent()
رمز نسبة مئوية، ما يُعدّ حرفًا غير قانوني. لذلك، ستحصل على الخطأ:"Execution of URIDecode failed with error: Javascript runtime error: \"URIError: Malformed URI sequence. (URIDecode.js:2)\""
الدقة
تأكَّد من أنّ جميع الأحرف المستخدَمة في دوال عناوين URL قانونية ومسموح بها.
لحلّ المشكلة في مثال JavaScript الموضّح أعلاه، استخدِم ترميز رمز النسبة المئوية. على سبيل المثال، %25
:
var str = "75%25-Completed";
var decoded_str = decodeURIComponent(str);
context.setVariable("decoded_str", decoded_str);