извлечь текст из додзё xhrPost - PullRequest
0 голосов
/ 04 октября 2011

У меня есть функция, в которой я делаю dojo.xhrPost().Теперь возвращаемые данные обернуты в нежелательный <div>, который зависит от фреймворка и не может быть удален.Как я могу удалить элемент div.Вот мой код.

function sendForm() {
    var resultNode = dojo.create("li");
    dojo.xhrPost({
        url: "${sectionaddurl}",
        form: dojo.byId("sectionform"),
        load: function(newContent) {
            dojo.style(resultNode,"display","block");
            resultNode.innerHTML = newContent;                   
        },
        error: function() {
            resultNode.innerHTML = "Your form could not be sent.";
        }
    });           
    $("#sectionform")[0].reset();
    dojo.place(resultNode, "existing_coursesection", "first");
}

В jquery мы будем делать $("#some_ID").text();, где id будет div, полученный через ajax.Позволит ли мне dojo манипулировать данными запроса, которые похожи на <div id="unwanted_div">containing my text</div>

каких-либо идей?

Ответы [ 2 ]

1 голос
/ 04 октября 2011

Я не уверен, что это "лучшие" способы пойти на это, но они должны работать


1) Пусть данные интерпретируются как XML, а не как простой текст:

dojo.require('dojox.xml.parser');

dojo.xhrPost({
    //...
    handleAs: 'xml',
    //...
    load: function(response_div){
        //content should be xml now
        result.innerHTML = dojox.xml.parser.textContent(response_div);
    }
    //...
})

2) Преобразуйте его в html, а затем обработайте

//create a thworwaway div with the respnse
var d = dojo.create('div', {innerHTML: response});
result.innerHTML = d.firstChild.innerHTML;

2.1) Используйте dojo.query вместо .firstChild, если вам нужно смягчение смора.

0 голосов
/ 06 октября 2011

Я предпочитаю обрабатывать как формат JSON :), у dojo есть больше утилит для доступа и повторения ответа.

 dojo.xhrGet({
        url : url,
        handleAs : "json",
        failOk : true, //Indicates whether a request should be allowed to fail
        //(and therefore no console error message in the event of a failure)
        timeout : 20000,
        content: {//params},
        load: function(){ // something },
        preventCache: true,
        error: function(error, ioargs) {
            console.info("error function", ioargs);
            var message = "";
            console.info(ioargs.xhr.status, error);
            //error process
          },
        handle: function(response, ioargs) {
            var message = "";
            console.info(ioargs.xhr.status, error);
            switch (ioargs.xhr.status) {
            case 200:
                message = "Good request.";
                break;
            case 404:
                message = "The page you requested was not found.";
                break;
            case 0:
                message = "A network error occurred. Check that you are connected to the internet.";
                break;
            default:
                message = "An unknown error occurred";
            }
          }
      });
...