Я надеялся, что кто-то из вас сможет помочь решить эту проблему со сценарием, которая у меня есть
В одном из моих соотношений у меня есть параметр, который сохраняется как ...
C_RegionValue = “N/A”
Однако, когда мне нужно заменить это значение на один из моих URL, N / A необходимо изменить на N% 2FA
Итак, я выполняю это следующим образом:
if ( (strcmp("N/A", lr_eval_string("{C_RegionValue}"))) == 0){
lr_save_string("N%2FA", "C_RegionValue");
}
И это работает правильно
do_create_RegionString.c(16): Notify: Saving Parameter "C_RegionValue = N/A".
do_create_RegionString.c(18): Notify: Parameter Substitution: parameter "C_RegionValue" = "N/A"
do_create_RegionString.c(19): Notify: Saving Parameter "C_RegionValue = N%2FA".
И я даже могу снова использовать этот новый параметр в последующих вызовах
lr_param_sprintf("temp_RString", "&vs_geoType_%d=Region&vs_geo_%d=%s", i, i,
lr_eval_string("{C_RegionValue}"));
do_create_RegionString.c(23): Notify: Parameter Substitution: parameter "C_RegionValue" = "N%2FA"
do_create_RegionString.c(23): Notify: Saving Parameter "temp_RString = &vs_geoType_6=Region&vs_geo_6=N%2FA".
Но по какой-то причине я не могу использовать его на этом звонке
lr_param_sprintf(lr_eval_string("{RegionString}"), lr_eval_string("{P_RGet_TmpVal}{temp_RString}"));
Нет ошибок, просто никогда не сохраняется новое значение, Он заменяет все правильно, но значение никогда не сохраняется.
Я знаю, что этот раздел кода работает, потому что он делает это 5 раз до этого вызова.
do_create_RegionString.c(35): Notify: Parameter Substitution: parameter "RegionString" = "PickAnyRegion_XL"
do_create_RegionString.c(35): Notify: Parameter Substitution: parameter "P_RGet_TmpVal" = "&vs_geoType_0=Region&vs_geo_0=Global (All Regions)&vs_geoType_1=Region&vs_geo_1=E&vs_geoType_2=Region&vs_geo_2=GC&vs_geoType_3=Region&vs_geo_3=I&vs_geoType_4=Region&vs_geo_4=NA&vs_geoType_5=Region&vs_geo_5=SA"
do_create_RegionString.c(35): Notify: Parameter Substitution: parameter "temp_RString" = "&vs_geoType_6=Region&vs_geo_6=N%2FA"
И это становится еще более странным, если я не изменяю значение на N% 2FA и оставляю его как N / A, или даже если я использую тот же оператор If и меняю значение обратно на N / A, все работает правильно ...
do_create_RegionString.c(35): Notify: Parameter Substitution: parameter "RegionString" = "PickAnyRegion_XL"
do_create_RegionString.c(35): Notify: Parameter Substitution: parameter "P_RGet_TmpVal" = "&vs_geoType_0=Region&vs_geo_0=Global (All Regions)&vs_geoType_1=Region&vs_geo_1=E&vs_geoType_2=Region&vs_geo_2=GC&vs_geoType_3=Region&vs_geo_3=I&vs_geoType_4=Region&vs_geo_4=NA&vs_geoType_5=Region&vs_geo_5=SA"
do_create_RegionString.c(35): Notify: Parameter Substitution: parameter "temp_RString" = "&vs_geoType_6=Region&vs_geo_6=N/A"
do_create_RegionString.c(35): Notify: Saving Parameter "PickAnyRegion_XL = &vs_geoType_0=Region&vs_geo_0=Global (All Regions)&vs_geoType_1=Region&vs_geo_1=E&vs_geoType_2=Region&vs_geo_2=GC&vs_geoType_3=Region&vs_geo_3=I&vs_geoType_4=Region&vs_geo_4=NA&vs_geoType_5=Region&vs_geo_5=SA&vs_geoType_6=Region&vs_geo_6=N/A".
Есть какие-нибудь мысли или идеи здесь?
EDIT:
Вот лучший пример
Action()
{
lr_save_string("N/A","C_RegionValue");
lr_save_string("XL_PickAnySearch", "RegionString");
lr_save_string("&vs_geoType_0=Region&vs_geo_0=test","temp_RString");
lr_save_string(lr_eval_string("{temp_RString}"), "XL_PickAnySearch");
/*
Lines 12-13 section will convert N/A into N%2FA, if left uncommented Line 20
will not save the string, if commented line 20 will save the string
*/
web_convert_param("C_RegionValue", "SourceEncoding=PLAIN",
"TargetEncoding=URL", LAST);
lr_param_sprintf("temp_RString", "&vs_geoType_%d=Region&vs_geo_%d=%s", 1, 1,
lr_eval_string("{C_RegionValue}"));
lr_param_sprintf("P_RTmpVal", "{%s}", lr_eval_string("{RegionString}"));
lr_param_sprintf("P_RGet_TmpVal", "%s", lr_eval_string(lr_eval_string("{P_RTmpVal}")));
lr_param_sprintf(lr_eval_string("{RegionString}"), lr_eval_string("{P_RGet_TmpVal}{temp_RString}"));
return 0;
}