أنت تطّلع على مستندات 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 في حال استخدام رقم خارج نطاق القيم القانونية. |
خطأ في المرجع | يتم طرح خطأ ReferenceError في حال استخدام (إشارة) إلى متغيّر لم يتم تضمينه في نموذج البيان. |
خطأ في البنية | يتم عرض SyntaxError إذا حاولت تقييم رمز برمجي يحتوي على خطأ في البنية. |
خطأ في النوع | يتم طرح خطأ TypeError إذا كنت تستخدم عملية خارج نطاق الأنواع المتوقّعة. |
خطأ في معرّف الموارد المنتظم (URI) | يتم طرح خطأ URIError في حال استخدام أحرف غير صالحة في دالة معرّف الموارد المنتظم. |
خطأ في النطاق
يتم طرح نوع الخطأ 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
الدقة
تأكَّد من استخدام تاريخ صالح دائمًا أثناء استخدام واجهات برمجة تطبيقات Date API في رمز 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 الموضّح أعلاه، اضبط عدد الأرقام المميّزة على 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، والذي يتطابق مع ما في سلسلة الخطأ: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 أعلاه) وتأكَّد مما إذا كان للكائن قيمة صالحة أو غير محدّدة. قد تحتاج إلى قراءة وفهم ملف المصدر الكامل لتحديد الطريقة التي تم بها تعريف الكائن المحدد أو اشتقاقه وتحديد سبب عدم تعريف الكائن. إذا تبيّن لك أنّ العنصر المحدّد غير محدّد وأنّك تحاول الوصول إلى طول السمة منه، هذا هو سبب الخطأ.
لنلقِ نظرة على مثال لفهم هذه المشكلة بشكل أفضل:
لنفترض أنّك تلقّيت استجابة 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)\""
يشير وصف الخطأ إلى أنّه تم استخدام تسلسل عنوان URL بتنسيق غير صحيح في السطر رقم 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);