أنت الآن بصدد الاطّلاع على مستندات Apigee Edge.
انتقِل إلى
مستندات Apigee X. info
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 العديد من أنواع الأخطاء المختلفة ScriptExecutionFailed. في ما يلي بعض الأخطاء الأكثر شيوعًا:
| نوع الخطأ | السبب |
| خطأ في النطاق | يتم عرض الخطأ RangeError إذا استخدمت رقمًا خارج نطاق القيم المسموح بها. |
| Reference Error | يتم عرض الخطأ ReferenceError إذا استخدمت (أشرت إلى) متغيّرًا لم يتم تعريفه. |
| خطأ في البنية | يتم عرض 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: رقم غير صالح تم تمريره إلى واجهات برمجة التطبيقات التي تتطلّب دقة عالية
مثال على نص ردّ الخطأ
{
"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 الموضّح أعلاه، اضبط عدد الأرقام المعنوية على 2، وهو عدد صالح:
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، والذي يتطابق مع ما هو موجود في faultstring: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 في الحالات التالية:
- أن يكون أحد المعامِلات أو الوسيطات التي تم تمريرها إلى دالة غير متوافق مع النوع الذي يتوقّعه عامل التشغيل أو الدالة.
- يتم استدعاء دالة على عنصر فارغ أو غير محدّد أو خاطئ.
- يتم الوصول إلى سمة من كائن فارغ أو غير محدّد أو خاطئ.
على سبيل المثال، يتم عرض خطأ في النوع:
- في حال محاولة استدعاء الدالة
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 أعلاه) وتأكَّد مما إذا كان العنصر يتضمّن قيمة صالحة أو غير محدّد. قد تحتاج إلى قراءة ملف المصدر الكامل وفهمه لتحديد كيفية تعريف العنصر المحدّد أو استخراجه وتحديد سبب عدم تعريف العنصر. إذا تبيّن لك أنّ العنصر المحدّد غير معرَّف بالفعل وأنّك تحاول الوصول إلى السمة length منه، سيكون ذلك هو سبب الخطأ.
لنلقِ نظرة على مثال لفهم هذه المشكلة بشكل أفضل:
لنفترض أنّك تلقّيت استجابة 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);
}
خطأ في معرّف الموارد المنتظم (URI)
يتم عرض نوع الخطأ 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 الخاص بردّ الخطأ. على سبيل المثال، في السلسلة 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)\""
الدقة
تأكَّد من أنّ جميع الأحرف المستخدَمة في وظائف URI قانونية ومسموح بها.
لحلّ المشكلة في مثال JavaScript الموضّح أعلاه، استخدِم ترميز رمز النسبة المئوية. على سبيل المثال، %25:
var str = "75%25-Completed";
var decoded_str = decodeURIComponent(str);
context.setVariable("decoded_str", decoded_str);