Вы отправляете JSON, как это
$.ajax(url, {
data : JSON.stringify(myJSObject),
contentType : 'application/json',
type : 'POST',
...
, если вы передаете объект как settings.data jQuery будет преобразовывать его в параметры запроса и по умолчанию отправлять с помощью приложения типа данных / x-www-form- urlencoded; charset = UTF-8, возможно, не то, что вы хотите
Как переменная "согласия" обновляется? В настоящий момент вы просто перезагружаете тот же URL, который вы создали в первый раз; если переменная JavaScript accord
изменилась, и вы хотите изменить URL-адрес, чтобы отразить это, вы должны создать новый URL-адрес и перейти в iframe на новую страницу с другим параметром accord
.
function encodeParameters(o) {
var s= [];
for (var k in o)
if (o.hasOwnProperty(k))
s.push(encodeURIComponent(k)+'='+encodeURIComponent(o[k]));
return s.join('&');
}
var accord= ui.newHeader.text();
var url= 'mapURL.jsp?'+encodeParameters({
lat: '33.65', lng: '-84.42', accord: accord
});
document.getElementById('mapframe').src= url;
Примечание contentWindow
исторически является расширением IE, и его лучше избегать. Кроме того, если вы должны создать свой iframe, склеив HTML, вам нужно будет экранировать URL-адрес с помощью HTML, прежде чем включать его в разметку. В противном случае символы и
в URL-адресе недействительны и могут вызвать проблемы, если вы нажмете имя параметра, которое соответствует имени объекта HTML.
function encodeHTML(s) {
return s.replace(/&/g, '&').replace(/</g, '<').replace(/"/g, '"');
}
htmlData[i++]= '<iframe id="mapframe" src="'+encodeHTML(url)+'" frameborder="0" style="width:330px;height:300px"></iframe>';
(Обычно я предпочитаю создавать элементы с помощью методов DOM, чтобы избежать явного HTML-кодирования.)