Javascript IE或Edge的AJAX帖子中没有数据,只有标题
所以在我的场景中,我使用AJAX将数据发送到服务器。以下是我的AJAX代码:Javascript IE或Edge的AJAX帖子中没有数据,只有标题,javascript,jquery,c,ajax,internet-explorer,Javascript,Jquery,C,Ajax,Internet Explorer,所以在我的场景中,我使用AJAX将数据发送到服务器。以下是我的AJAX代码: $.post('change_password',"username"+username+"password"+$('#Confirm_password').val()+";",function(data,status){ alert("Data: " + data + "\nStatus: " + status); if(status=="success"){ if(data=="set_suc
$.post('change_password',"username"+username+"password"+$('#Confirm_password').val()+";",function(data,status){
alert("Data: " + data + "\nStatus: " + status);
if(status=="success"){
if(data=="set_success"){
alert("Password Change Success");
}
}
});
我读了很多文章,他们说IE用2个tcp包(1个头和1个数据内容)发送帖子。因此,在我的服务器端,如果我只做1接收,我只能得到标题,而不能得到我真正需要的数据内容。我尝试了一些解决方案,比如添加meta标签,比如
<meta charset="utf-8">
这是一个轻量级tcp/ip的LWIP库。它通过netconn_recv接收传入请求。但是如果我使用IE浏览器,它只能得到文章的标题。我尝试再次接收传入的请求。它有时确实会接收“仅数据内容(无头)”,但有时会收到错误的数据包(如其他请求)。我只是想知道是否有一种方法可以在2个tcp数据包中接收帖子
/* for browser like IE. Recieve the netbuf again to get content */
/*
if(strcmp(http_body,"") == 0){
if((err = netconn_recv(conn, &inbuf)) == ERR_OK) {
netbuf_first(inbuf);
do{
netbuf_data(inbuf, (void**)&http_body, &buflen);
}while(netbuf_next(inbuf) >= 0);
}
netconn_write(conn,&http_body[0], strlen(http_body), NETCONN_COPY);
}
else{
netconn_write(conn,&http_body[0], strlen(http_body), NETCONN_COPY);
}
*/
一个足够大的负载不会导致来自任何浏览器的多个TCP数据包吗?如果您的服务器端代码在数据包级别处理数据,我认为您总是需要等到收到所有数据包后,才能收到客户端代码发出的完整请求。我知道您的意思。但当“netconn_recv”时,“netconn_buf”包含“pbuf”中的所有接收数据。我通过做do-while循环来提取数据。我得到的只是文章的标题。这是C代码吗?也许你应该在你的问题中添加一个“c”标记,而不是“javascript”和“jquery”……是的,但我只是想找到一个解决这个问题的方法。要么让IE发送标题和数据完整的帖子,要么尝试处理服务器端的接收。
if((err = netconn_recv(conn, &inbuf)) == ERR_OK) {
netbuf_first(inbuf);
do{
netbuf_data(inbuf, (void**)&buf, &buflen);
strcat(recieve_buffer, buf);
}while(netbuf_next(inbuf) >= 0);
}
/* for browser like IE. Recieve the netbuf again to get content */
/*
if(strcmp(http_body,"") == 0){
if((err = netconn_recv(conn, &inbuf)) == ERR_OK) {
netbuf_first(inbuf);
do{
netbuf_data(inbuf, (void**)&http_body, &buflen);
}while(netbuf_next(inbuf) >= 0);
}
netconn_write(conn,&http_body[0], strlen(http_body), NETCONN_COPY);
}
else{
netconn_write(conn,&http_body[0], strlen(http_body), NETCONN_COPY);
}
*/