87 messaggi dal 11 settembre 2004
Salve,
Da una funzione client ajax richiamo il collegamento ad un mio webservice, la procedura funziona su tutti i principali browser tranne che su safari.
Ho provato a cercare quale poteva essere il problema ma non ho trovato risposta.
$.ajax({
type: "POST",
url: url + "/" + method,
data: "{cantiere:'" + data + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: OnSuccessCall,
error: OnErrorCall
});
questa è parte della funzione che richiama il webservice. perfettamente funzionante.

Qualcuno ha già incontrato questo problema.
grazie
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
apri gli strumenti di sviluppo di Safari e vedi se nella console appare qualche errore. Potrebbe esserci d'aiuto a capire il problema.
Se non hai errori, vai nella scheda "Network" o "Rete" e vedi se la richiesta avviene oppure no e, in caso, qual è lo status code http restituito dal server.

Attenzione perché questo non è json. Bisogna usare i doppi apici sia attorno alla proprietà "cantiere" che al suo valore.
data: "{cantiere:'" + data + "'}",


Correggilo così. La funzione JSON.stringify si occupa di produrre json valido a partire da un oggetto javascript.
data: JSON.stringify({cantiere: data}),


ciao,
Moreno

Enjoy learning and just keep making
87 messaggi dal 11 settembre 2004
Ciao Moreno,
Grazie puntuale come al solito.
con le tue indicazioni sono riuscito a scoprire che le dichiarazioni di variabile con let non sono supportate da safari. cambiandole in var tutto ok.
Adesso rimane un'altro problema sembra che jquery non funzioni.
tipo la sottostante funzione.
function selectcombo_PortoImmatricolazione_filter(word) {
var length = selectcombo_PortoImmatricolazione_items.length;
var collection = [];
var hidden = 0;
for (var i = 0; i < length; i++) {
if (selectcombo_PortoImmatricolazione_items[i].value.toLowerCase().includes(word)) {
$(selectcombo_PortoImmatricolazione_items[i]).show();
}
else {
$(selectcombo_PortoImmatricolazione_items[i]).hide();
hidden++;
}
}

//If all items are hidden, show the empty view
if (hidden === length) {
$('#selectcombo_PortoImmatricolazione_empty').show();
}
else {
$('#selectcombo_PortoImmatricolazione_empty').hide();
}
}
continuo indagini e poi riposto eventuali modifiche.
Ciao e grazie
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
guardando il codice non ti so dire... dovresti mettere qualche breakpoint ed eseguire quella funzione passo-passo usando il debugger di Safari.

Vedo solo che stai usando il metodo .includes di ECMAScript2015 (o ES6 che dir si voglia) che non è supportato ovunque. Ad esempio, da come vedo qui alla sezione "string prototype methods", IE11 non lo supporta. Safari 11 dice di sì, ma tu che versione stai usando?

Comunque, se usi funzionalità di EcmaScript2015 lato browser, dovresti impiegare i polyfill di Babel per migliorare la compatibilità con i browser meno recenti. Assicurati che la funzionalità che stai usando sia coperta. Qui trovi la lista.
https://babeljs.io/docs/usage/polyfill/

ciao,
Moreno

Enjoy learning and just keep making
87 messaggi dal 11 settembre 2004
Ok provo a fare come dici. sicuramente è molto più corretto.

Grazie
11.886 messaggi dal 09 febbraio 2002
Contributi
Ok decidi tu. In alternativa puoi anche decidere di fare a meno delle funzionalità di ES2015. Ad esempio, puoi sostituire includes con indexOf. Non sarà ugualmente elegante, ma almeno ti assicuri una migliore compatibilità.

Enjoy learning and just keep making
87 messaggi dal 11 settembre 2004
si in effetti, hai ragione.
Sto facendo un casino con questo controllo che mezzo basta.
Il bello è che ho 2 versioni di questo controllo. una che prende i dati da un array ed un'altra da un webservice.
quella con l'array funziona anche su safari, l'altra ha problemi nel filtro di ricerca impostato sull'input e non fa selezionare gli elementi.
87 messaggi dal 11 settembre 2004
Ciao,
Per tutti coloro ai quali potrebbe interessare. inserendo indexOf al posto di includes risolto il problema su safari sulla ricerca.
Adesso non funziona la selezione in uno user control all'interno di un'altro user control in una finestra modale.
Lo stesso controllo sulla stessa pagina funziona regolarmente ma non quello richiamato sulla finestra modale che non recupera l'evento click.
Non capisco dove possa essere l'inghippo.
tanto per spiegare, il controllo è una dropbox con ricerca che recupera una lista di dati da un webservice, tramite ajax. La ricerca funziona con la modifica proposta da Moreno.
questa è la funzione che non viene recuperata al click.
$('#ctl00_ContentPlaceHolder1_selectcomboCantiereBarca_menuItems').on('click', '.dropdown-item1', function () {
$('#ctl00_ContentPlaceHolder1_selectcomboCantiereBarca_Button_dropdown').val($(this)[0].value);
$('#ctl00_ContentPlaceHolder1_selectcomboCantiereBarca_HiddenField_value').val($(this)[0].id);
$('#ctl00_ContentPlaceHolder1_selectcomboCantiereBarca_HiddenField_Text').val($(this)[0].value);
$('#ctl00_ContentPlaceHolder1_selectcomboCantiereBarca_Button_dropdown').dropdown('toggle');
ChargeModels($(this)[0].id);
})
cmq grazie Moreno

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.