2015-10-05 13 views
13

sto facendo qualcosa di simileJquery ajax spazi e questione commerciale

var apiOptions = { 
    url: url, 
    dataType: 'jsonp', 
    type: "GET", 
    success: success 
}; 

if(dataOptions) { 
    apiOptions.data = { 
     key: self.settings.key, 
     limit: self.limit, 
     address: dataOptions.address, 
    }; 
} 
$.ajax(apiOptions); 

e funziona benissimo per tutto tranne che per quando ho "&", in modo da spazi attorno una e commerciale. Quindi il parametro di richiesta è uguale a "D+&+D,+enterprisess" o D+%26+D%2C. Questo restituisce quindi un 404 sul server.

Qualche idea su cosa fare qui?

+0

Usa 'encodeURIComponent()' per URL codificare i tuoi valori. –

+0

Da quello che ho letto passando nei miei parametri nella chiamata jquery ajax non avrei dovuto. Inoltre l'ho provato e si rompe ancora peggio penso che faccia come la doppia codifica quindi – StevieB

+0

Stranamente funziona sul mio server locale cioè parametro come "D +% 26 + D% 2C" ma non sul server di sviluppo – StevieB

risposta

2

Per i parametri di passaggio con carattere spaziale e spaziale in ajax, è possibile utilizzare la funzione escape e unescape.

var test = 'Exemplae Actão ç @#$%$ '; 
var testEscape = escape(test); 
console.info(test , testEscape , unescape(testEscape)); 

Questo si risolve problema

1

Prova utilizzando String.prototype.replace() con RegExp()/\s(&)\s/

var data = "123 & abc"; 
 
var res = data.replace(/\s(&)\s/, "$1"); 
 
console.log("data:", data,"res:", res)