小编Jas*_*n S的帖子

使用ajax将Proto-buf消息发送到Java服务器

使用https://github.com/dcodeIO/ProtoBuf.js/我将要发送到java服务器的消息编码为名为batch的ByteBuffer:

batch:
  ByteBuffer {array: ArrayBuffer, view: DataView, offset: 0, markedOffset: -1, length: 139…}
    array: ArrayBuffer
    length: 139
    littleEndian: false
    markedOffset: -1
    offset: 0
    view: DataView
    __proto__: Object
Run Code Online (Sandbox Code Playgroud)

现在我想用jquery的Ajax发送它:

  $.ajax({
    url: myUrl,
    type: 'POST',
    data : batch,
    contentType: 'application/protobuf',
    accept: 'application/json'
  })
Run Code Online (Sandbox Code Playgroud)

但我似乎无法做到这一点.上面的代码给了我jquery异常:

Uncaught TypeError: Cannot set property 'littleEndian' of undefined myScript.js:1353
ByteBuffer.LE bunk.js:1353
jQuery.param.add jquery.js:7203
buildParams jquery.js:7261
jQuery.param jquery.js:7223
jQuery.extend.ajax
Run Code Online (Sandbox Code Playgroud)

如果我从批处理(batch.toArrayBuffer())获得数组缓冲区,Java服务器什么也得不到

ByteStreams.toByteArray(req.getInputStream());
Run Code Online (Sandbox Code Playgroud)

我应该如何编码ByteBuffer来发送这样的?我应该如何将其解码为java字节数组?

java ajax jquery protocol-buffers arraybuffer

7
推荐指数
1
解决办法
2105
查看次数

jQuery"drop"和"over"不会在droppable上触发

我试图提高我的web-dev工作技能,但是jQuery的拖放功能有点让人失望.不幸的是,我无法得到droppable的"drop"或"over"事件.

我不想使用jQuery表拖放插件,所以我在td结构的div中有多个div(全部在$(document).ready中生成).中间div是可放置的,而最里面的div是可拖动的.生成的HTML如下所示:

<td class="vertical">
<div id="droppable3" class="droppable ui-droppable" style="width: 100%; height: 100%;"
over="function () { alert("working!"); }" 
drop="function (event, ui) { 
    debugger;
    var firstDrag = ui.draggable;
    var secondDrag = $(this).childNodes[0];
    var destDrop = $(this);
    var sourceDrop = firstDrag.parent;
    $("#middle").append("first drag:" + firstDrag.id + "\nSecondDrag:" + secondDrag.id
     + "\ndest Drop:" + destDrop.id + "\nsourceDrop:" + sourceDrop.id); }">
        <div id="draggable3" class="draggable ui-draggable" 
        style="width: 100%; height: 100%;">
        </div>
</div>
</td>
Run Code Online (Sandbox Code Playgroud)

除了ID之外,它在其他TD中完全相同.

拖拉似乎工作得很好; 我可以拖出那个内部div,如果我不把它放在一个合适的droppable上,或者只是坚持在那里,如果我这样做,但它永远不会触发"over"或"drop"事件.该代码中的调试器行永远不会被命中.

这是我如何设置draggable/droppable:

function getTD(claz){
var td = jQuery("<td/>",{'class': claz});
var droppable …
Run Code Online (Sandbox Code Playgroud)

javascript jquery jquery-ui droppable

1
推荐指数
1
解决办法
4957
查看次数