ASP Classic теряет параметры URL из представленных Ajax данных [дубликат]

Когда вы вызываете getDownloadUrl(), вызов является асинхронным, и вы должны подписаться на успешный обратный вызов, чтобы получить результаты:

// Calls the server to securely obtain an unguessable download Url
private void getUrlAsync (String date){
    // Points to the root reference
    StorageReference storageRef = FirebaseStorage.getInstance().getReference();
    StorageReference dateRef = storageRef.child("/" + date+ ".csv");
    dateRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>()
    {
        @Override
        public void onSuccess(Uri downloadUrl) 
        {                
           //do something with downloadurl
        } 
    });
}

Это вернет общедоступный неопознанный URL-адрес загрузки. Если вы просто загрузили файл, этот общедоступный URL-адрес будет включен в обратный вызов для загрузки (вам не нужно вызывать другой метод async после того, как вы его загрузили).

Однако, если все, что вы хотите, a String представления ссылки, вы можете просто вызвать .toString()

// Returns a Uri of the form gs://bucket/path that can be used
// in future calls to getReferenceFromUrl to perform additional
// actions
private String niceRefLink (String date){
    // Points to the root reference
    StorageReference storageRef = FirebaseStorage.getInstance().getReference();
    StorageReference dateRef = storageRef.child("/" + date+ ".csv");
    return dateRef.toString();
}
188
задан user3284463 27 March 2016 в 07:58
поделиться

5 ответов

Попробуйте encodeURIComponent .

Кодирует компонент Uniform Resource Identifier (URI), заменяя каждый экземпляр определенных символов на одну, две, три или четыре escape-последовательности представляющий кодировку UTF-8 символа (будет только четыре escape-последовательности для символов, состоящих из двух «суррогатных» символов).

Пример:

var encoded = encodeURIComponent(str);
439
ответ дан Eric J. 25 August 2018 в 12:40
поделиться

Я использую MVC3 / EntityFramework в качестве исходного кода, передняя часть потребляет все мои контроллеры проектов через jquery, отправляя напрямую (используя $ .post), не требует указания данных, когда вы передаете параметры напрямую, кроме URL-адреса жёстко. Я уже тестировал несколько символов, даже отправил URL (этот http://www.ihackforfun.eu/index.php?title=update-on-url-crazy&more=1&c=1&tb= 1 & amp; pb = 1 ) в качестве параметра и вообще не имеет проблемы, даже несмотря на то, что encodeURIComponent отлично работает, когда вы передаете все данные внутри URL-адреса (жестко закодированного)

Жестко закодированного URL, т.е.>

 var encodedName = encodeURIComponent(name);
 var url = "ControllerName/ActionName/" + encodedName + "/" + keyword + "/" + description + "/" + linkUrl + "/" + includeMetrics + "/" + typeTask + "/" + project + "/" + userCreated + "/" + userModified + "/" + status + "/" + parent;; // + name + "/" + keyword + "/" + description + "/" + linkUrl + "/" + includeMetrics + "/" + typeTask + "/" + project + "/" + userCreated + "/" + userModified + "/" + status + "/" + parent;

В противном случае не используйте encodeURIComponent и вместо этого попробуйте передать параметры в методе post ajax

 var url = "ControllerName/ActionName/";   
 $.post(url,
        { name: nameVal, fkKeyword: keyword, description: descriptionVal, linkUrl: linkUrlVal, includeMetrics: includeMetricsVal, FKTypeTask: typeTask, FKProject: project, FKUserCreated: userCreated, FKUserModified: userModified, FKStatus: status, FKParent: parent },
 function (data) {.......});
3
ответ дан d1jhoni1b 25 August 2018 в 12:40
поделиться

попробуйте этот

var query = "{% url accounts.views.instasearch  %}?q=" + $('#tags').val().replace(/ /g, '+');
0
ответ дан genesis 25 August 2018 в 12:40
поделиться

encodeURIComponent отлично работает для меня. мы можем дать url, как это в ajax call.The код, показанный ниже:

  $.ajax({
    cache: false,
    type: "POST",
    url: "http://atandra.mivamerchantdev.com//mm5/json.mvc?Store_Code=ATA&Function=Module&Module_Code=thub_connector&Module_Function=THUB_Request",
    data: "strChannelName=" + $('#txtupdstorename').val() + "&ServiceUrl=" + encodeURIComponent($('#txtupdserviceurl').val()),
    dataType: "HTML",
    success: function (data) {
    },
    error: function (xhr, ajaxOptions, thrownError) {
    }
  });
20
ответ дан JakeGould 25 August 2018 в 12:40
поделиться

Лучший способ:

encodeURIComponent выполняет все символы, кроме следующих: alphabetic, decimal digits, - _ . ! ~ * ' ( )

Чтобы избежать неожиданных запросов на сервер, вы должны вызывать encodeURIComponent по любым введенным пользователем параметрам, которые будет передан как часть URI. Например, пользователь может ввести «Thyme & amp; time = again» для комментария переменной. Не используя encodeURIComponent для этой переменной, вы получите комментарий = Thyme% 20 & amp; time = again. Обратите внимание, что знак амперсанда и знак равенства указывают новую пару ключей и значений. Поэтому вместо того, чтобы ключ комментария POST был равен «Thyme & amp; time = again», у вас есть две клавиши POST, одна из которых равна «Thyme», а другая (время) равна снова.

Для приложений / x-www-form-urlencoded (POST), за http://www.w3.org/TR/html401/interac...m-content-type , пробелы должны быть заменены на ' + ', поэтому можно запросить замену encodeURIComponent с дополнительной заменой «% 20» на «+».

Если вы хотите быть более строгим в соблюдении RFC 3986 (который резервирует! ', (,) и *), даже несмотря на то, что эти символы не имеют формализованного использования разграничения URI, можно безопасно использовать следующее:

function fixedEncodeURIComponent (str) {
  return encodeURIComponent(str).replace(/[!'()]/g, escape).replace(/\*/g, "%2A");
}
8
ответ дан StackOverFlow 25 August 2018 в 12:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: