У меня есть диалог YUI, который отправляет форму сервлету Java.Сервлет возвращает html и javascript.Я беру ответ и помещаю его в div на странице, а затем проверяю javascript, который находится внутри div.
Моя проблема в том, что я получаю сообщение об ошибке в консоли firebug, говорящее «YAHOO не определен» каккак только сервлет вернется.
Я не включаю файлы YUI js в сервлет, поскольку я не думал, что они мне понадобятся, я ожидаю, что файлов, включенных в заголовок главной страницы, будет достаточно.
Если я удаляю все ссылки на YUI из javascript, возвращаемого моим сервлетом, тогда все работает хорошо.
Что я должен сделать, чтобы прекратить получать эту ошибку, как только мой сервлет вернется?*
Мой сервлет возвращает что-то вроде:
<div id="features">some html to display</div>
<script id="ipadJS" type='text/javascript'>
var editButton1 = new YAHOO.widget.Button('editButton1', { onclick: { fn: editButtonClick, obj: {id: '469155', name : 'name 1'} } });
var editButton2 = new YAHOO.widget.Button('editButton2', { onclick: { fn: editButtonClick, obj: {id: '84889', name : 'name 2'} } });
</script>
Вот код, который я использовал для создания диалога, я использую функцию handleSuccess, чтобы поместить свой ответ от моего сервлета на страницу (обратите внимание, что хотя я не активно помещаю javascript на страницу, он все равно выдает ошибку «YAHOO не определено».):
YAHOO.namespace("ipad");
YAHOO.util.Event.onDOMReady(function () {
// Remove progressively enhanced content class, just before creating the module
YAHOO.util.Dom.removeClass("createNewFeature", "yui-pe-content");
// Define various event handlers for Dialog
var handleSubmit = function() {
this.submit();
};
var handleCancel = function() {
this.cancel();
};
var handleSuccess = function(o) {
var response = o.responseText;
var div = YAHOO.util.Dom.get('features');
div.innerHTML = response;
};
var handleFailure = function(o) {
alert("Submission failed: " + o.status);
};
// Instantiate the Dialog
YAHOO.ipad.createNewFeature = new YAHOO.widget.Dialog("createNewFeature",
{ width : "450px",
fixedcenter : true,
visible : false,
constraintoviewport : true,
buttons : [ { text:"Submit", handler:handleSubmit, isDefault:true },
{ text:"Cancel", handler:handleCancel } ]
});
// Validate the entries in the form to require that both first and last name are entered
YAHOO.ipad.createNewFeature.validate = function() {
var data = this.getData();
return true;
};
YAHOO.ipad.createNewFeature.callback = { success: handleSuccess,
failure: handleFailure,
upload: handleSuccess };
// Render the Dialog
YAHOO.ipad.createNewFeature.render();
var createNewFeatureShowButton = new YAHOO.widget.Button('createNewFeatureShow');
YAHOO.util.Event.addListener("createNewFeatureShow", "click", YAHOO.ipad.clearFeatureValues, YAHOO.ipad.clearFeatureValues, true);
var manager = new YAHOO.widget.OverlayManager();
manager.register(YAHOO.ipad.createNewFeature);
});