当前位置: 首页 > 面试题库 >

奇数jQuery问题-对C程序的Ajax请求不太起作用

赵选
2023-03-14
问题内容

我有以下基本设置:

  • C程序在特定的未使用端口(例如1234)上打开套接字,然后等待,专门侦听HTTP请求。
  • 同一台机器上的网页主要使用CGI编写,使用jQuery发出针对localhost:1234的AJAX请求。

我想要的是让C程序查看请求,从中获取一些数据,然后使用包含其自身数据的简单HTTP响应进行响应。工作不成功:该网页看到了响应,读取了正确的HTTP标头(通过firebug进行了验证),但没有获取响应数据。在Wireshark中打开它表明整个响应都在进行,头文件和数据在一起,但是jQuery似乎只是无视数据本身。

jQuery很简单:

$.ajax({ url: "http://localhost:6112",
              data: {test1: 'testa', test2: 'testb'},
              success: function(d,s,x) {
                     alert("Data: " + d);
                     alert("Status: " + s);
                     alert("Object: " + x);
              },
              error: function(xhr) {
                     alert("Error: " + xhr.status);
              }
});

当我点击触发它的按钮时,请求就被发出了。“数据:”框弹出空白;状态弹出为“成功”,并创建一个对象。不会调用“错误”功能。

奇怪的是(无论如何对我而言),如果我打开Firefox并将其指向localhost:1234,它将完全按照我的期望进行加载-
C程序会响应数据,表明我未发送任何数据。Firefox很好地呈现了它(特别是响应数据)。如果我通过telnet到该端口并手动发送一个(看上去很傻)HTTP请求,也会发生同样的事情。因此,据我所知,这一定是jQuery的时髦之处,但我对它可能是什么感到茫然!

我尝试将AJAX请求中的dataType参数设置为各种内容-text / html,text / plain;
我什至尝试使用XML并修改了C程序以将其发送出去。不好-他们都做同样的事情。该网页获取正确的HTTP标头,但没有数据。

我也没有发现任何弹出的错误;Firebug没有抱怨;C程序没有抱怨……只是那些“非常安静地不起作用”的错误之一。

大家有什么想法吗?

编辑: 根据要求添加通过Firefox的实际请求

成功的请求(例如,将localhost:6112扔到URL栏中):

GET / HTTP / 1.1
主机:localhost:6112
User-Agent :(我对发布User-Agent字符串感到奇怪吗?)
接受:text / html,application / xhtml; q = 0.9,* / *; q = 0.8
接受语言:en-us,en; q = 0.7
活着:115
连接:保持活动状态

成功回应:
HTTP / 1.1 200 OK
主机:localhost
内容类型:文本/纯文本
内容长度:55



<html><head></head><body>Done and done.</body></html>

AJAX请求标头:

GET /?test1 = testa&test2 = testb HTTP / 1.1
主机:localhost:6112
用户代理:(UA字符串)
接受:文本/纯文本,* / *
接受语言:en-us,en; q = 0.5
接受编码:gzip,放气
接受字符集:ISO-8859-1,utf-8; q = 0.7,*; q = 0.7
活着:115
连接:保持活动状态
内容类型:application / x-www-form-urlencoded
引荐来源:localhost / cgi-bin / runtime.cgi
来源:本地主机

结果响应头:
HTTP / 1.1 200 OK
主机:localhost
内容类型:文本/纯文本
内容长度:55



<html><head></head><body>Done and done.</body></html>

(注意:因为我是新手,所以不得不裁剪其中一些超链接)


问题答案:

同一网站上的其他端口仍然违反XHR跨域策略。跨域工作的唯一方法是JSONP(不支持POST请求)或同一服务器上的代理Web服务。

JSONP是最简单的方法,它的作用基本上是在URL中添加一个<script>标记到您<head>的URL,这将执行GET请求(因此再见postdata)。您可以通过添加“
callback =?”来使其调用javascript回调。网址的GET参数-
然后,响应将不得不调用“回调”参数中命名的javascript方法。如果这样的话。

jQuery可能正在检测到它是一个远程URL并尝试使用JSONP,但是由于没有回调使它失败(并且也不会调用错误)。



 类似资料:
  • 问题内容: 由于jQuery中的Ajax请求,存在未定义的错误。但是它在本地工作。jquery1.3.2.js @ 3633行中的错误引用 我的代码是: 代码中的警报向我显示(0,“未定义”); 我做错了什么? 问题答案: 如果您的ajax请求在完成之前被取消,则可能会发生这种情况。当用户通过刷新,单击链接或更改浏览器中的URL离开页面时,jQuery引发错误事件。通过为ajax调用实现错误处理程

  • 我试图使用Axios,因为它是NodeJS中唯一具有异步/等待功能的模块。 我已经在Python脚本中有一个POST请求,它工作得很好,我正在尝试适应NodeJS服务器。 但我阻止了我的第一次发帖请求。如果我直接与请求模块一起使用,它工作得很好,请参阅我的代码: 使用Axios(或Axios实例,但稍后使用…)因为我需要保持我的会话(就像在Python中一样,它像一个符咒一样工作)。 而作为响应的

  • 本文向大家介绍Jquery Ajax xmlhttp请求成功问题,包括了Jquery Ajax xmlhttp请求成功问题的使用技巧和注意事项,需要的朋友参考一下 今天遇到了一个极其奇怪的问题,用各种工具检查都能看到服务器端返回了200,数据也是正常的,但是$.ajax 始终进不到success,郁闷啊,在网上找, 常见问题场景: 1.跨域; 2. $.ajax 没设置 dataType,及服务器

  • 问题内容: 我正在通过jQuery的$ .ajax函数使用的第三方API上调用POST。但是,当我拨打电话时,出现以下错误: 我从这篇文章中看到这可能是Webkit的错误,所以我在Firefox中尝试了此操作(我正在使用Chrome开发),并且得到了相同的结果。 在这篇文章中,我还尝试通过将$.ajax函数的属性设置为并将设置为来使用jsonp。但是,这导致了500个内部服务器错误。 当我使用–d

  • 问题内容: 我的html像这样 jQuery代码如下 当我单击Submit按钮时,我的ajax请求无法正常工作,看起来好像控件正在传递给JQuery Submit函数,但是ajax请求没有正确执行/正常工作,这是怎么回事? 问题答案: 将事件处理函数放入$(document).ready(function(){…})中。它现在应该工作 还添加preventDefault()以限制页面刷新

  • 问题内容: 您好,我注意到,这个简单的代码无法正常工作…… 该测试已在localhost上运行,我的意思是:我加载页面,关闭本地Web服务器,然后触发请求(通过一个简单的按钮,其中onclick指向此功能)。错误永远不会被调用,我得到的是调用成功处理程序,它具有textStatus =“ success”和data = null。我什至注意到请求在10秒之前就超时了。在Firefox(最新版本),