多个帖子请求和小型Web服务器

时间:2011-09-20 07:49:28

标签: javascript post

我的资源有限的小型网络服务器出现问题:

  • 该设备是一个带网络接口的嵌入式控制器,使用网页进行配置。

  • 数据以json格式和后置方式进行交换。

问题在于:我的设备一次只能提供一个缓冲区大小的一个帖子请求。

为了测试它,我创建了一个包含多个帖子的页面,用于将数据发送到我的服务器。我用浏览器Firefox 4.0打开页面,浏览器尝试打开多个套接字以并行处理所有请求。

如何创建顺序流消息? (我不担心速度)

这是我打算继续进行的一个小例子,但是这个解决方案打开了两个套接字,用于向我的服务器发送两个帖子请求并中止其中一个。

for (var j=0; j<2; j++) {
    // read page data and create objdata  
    jdata = JSON.stringify(objdata);

    // alert("I am about to POST this:\n\n" + jdata);

   $.post(
     'prgtimetbl.json',
     jdata,
     function(data) {
     //           alert("Response: " + data);
     },
     "json"
   );
}

2 个答案:

答案 0 :(得分:0)

使用jQuery使用$.ajaxasync: false

$.ajax({
    type: "POST",
    url: "some.php",
    async: false,
    data: "name=John&location=Boston",
    success: function(msg){
        alert( "Data Saved: " + msg );
    }
});

答案 1 :(得分:0)

Cixate比我快,但我使用异步排队请求的方法略有不同。

示例:http://jsfiddle.net/HTGPM/

代码:

$(document).ready(function(){
    var stuffToPost = [{name:'obj1',id:1},{name:'obj2',id:2},{name:'obj3',id:3}];
    var postIndex = 0;

    var postNext = function() {
        if (postIndex < stuffToPost.length)
        {
            $.ajax({
                type: 'post',
                url: '?',
                data: JSON.stringify(stuffToPost[postIndex]),
                success: function(data) {
                    alert('Data '+stuffToPost[postIndex].id+' was sent successfully');
                    postIndex++;
                    postNext();
                },
                error: function() {
                    alert('Something bad happened. Stopping');
                }
            });
        }
        else if (postIndex == stuffToPost.length)
        {
            alert('All data is sent !');
        }
    };

    postNext();
});