0

我有点困惑jQuery AJAX method,当我在屏幕上更改某些内容时,该方法正在调用。可能有一些问题异步任务?

这是 jQuery click 函数的内部:

    $("#divModularFenster").html(html).dialog({
            modal: true,
            buttons: {
                "OK": function () {
                            getJSONObjektList(function (jsonObjekt) {
                            console.log("Callback: " + JSON.stringify(jsonObjekt));
                            // other code
                            var pj = JSON.stringify(jsonObjekt);
                            $.support.cors = true;
                            $.ajax({
                                type: "POST",
                                contentType: "application/json; charset=utf-8",
                                data: pj,
                                dataType: "json",
                                processData: false,
                                url: "http://localhost:53658/PostDatenZumWebservice",
                                success: function (data) {
                                    alert("Post erfolgreich: ");

                                }
                            });
                         });                          
                    }
                  }
              });

在将数据发送到我的服务之前,应该调用此方法:

function getJSONObjektList(callback) {

var jsonObjekt = {};
jsonObjekt.ObjektId = [];
jsonObjekt.Selected = [];


doc = Qv.GetCurrentDocument();
doc.GetAllObjects(function (objects) {
    for (var i = 0; i < objects.length; i++) {
        var obj = objects[i];
        var id = obj.id;
        var caption = obj.caption;
        var type = obj.type;
        var my = obj.my;

        //liste alle verfuegbaren Objekte auf 
        jsonObjekt.ObjektId.push(id);

        if (type === "Statusbox") {
            doc.GetObject(id, function () {
                var statusboxInhalt = this.Data.Rows;
                var utilJSONObjekt;
                for (var j = 0; j < statusboxInhalt.length; j++) {


                    utilJSONObjekt = {};
                    utilJSONObjekt.SelectedObjektId;
                    utilJSONObjekt.SelectedObjektWerte = [];

                    var inhalt = statusboxInhalt[j];
                    console.log("Name: " + inhalt[0].text + " Wert: " + inhalt[2].text);


                    var valAr = inhalt[2].text.split(",");
                    for (var k = 0; k < valAr.length; k++) {
                        //liste alle verfuegbaren Objekte auf
                        utilJSONObjekt.SelectedObjektWerte.push($.trim(valAr[k]));

                    }
                    jsonObjekt.Selected.push(utilJSONObjekt);
                    //callback erst starten, wenn alle Elemente durchlaufen worden sind
                    if (j === (statusboxInhalt.length - 1)) {
                        callback(jsonObjekt);
                    }
                }
            });
        }
    }
 });
}

一些想法?

4

0 回答 0