我有一个url,我想检索在javascript变量中转到url(页面的所有代码)时生成的html dom。 我怎样才能做到这一点? 我猜一个HTML获取或发布? 谁能用jQuery给出一个例子? 每次我这样做$ .get或$ .post: $.get(“http://www.google.ca”, function(result) { alert(result); alert($(result).html()); }); $.post(“http://www.google.ca”, function(result) { alert(result); alert($(result).html()); }, “xml”); 每个调用中的第一个警报显示为空白,第二个警报显示为空。 有任何想法吗? 谢谢, 马特
在我公司的在线应用程序中,我们设置了一个基于JSONP的API,它返回我正在开发的书签使用的一些数据。 这是我设置的快速测试页面,它使用jQuery的$.ajax()方法访问API URL: http://troy.onespot.com/static/3915/index.html 如果您使用Firebug的“网络”选项卡(或类似)查看请求,您会看到发生的事情是URL已成功请求,但由于我们的应用程序将任何未经授权的用户重定向到登录页面,因此登录页面为也被浏览器请求并且看似解释为JavaScript。 这不可避免地导致exception,因为登录页面是HTML而不是JavaScript。 基本上,我正在寻找任何类型的钩子来确定请求何时导致重定向 – 某种方式来确定URL是否解析为JSONP响应(将执行我在bookmarklet脚本中预定义的方法)或者它导致了重定向。 我尝试在try {} catch(e) {}块中包装$.ajax()方法,但这不会捕获exception,我假设因为请求成功,而不是解析登录页面作为JavaScript。 有没有我可以使用try {} catch(e) {}块,或$.ajax()任何属性,可能允许我磨练exception或以其他方式确定我已被重定向? 我实际上怀疑这是可能的,因为$.getScript() (或$.ajax()的等效设置)只是动态加载脚本,并且无法检查响应头,因为它是跨域而不是真正的AJAX: http://api.jquery.com/jQuery.getScript/ 我的另一种方法是只关闭$.ajax()一段时间,直到我得到JSONP回调或不做,在后一种情况下,假设用户没有登录并提示他们这样做。 但是,我不喜欢这种方法,因为它会导致对应用服务器的大量不必要的请求,并且同时也会堆积JavaScriptexception。 谢谢你的任何建议!
我正在管理一个网站,该网站在过去几个月通过使用MVC 3.0 ASP.net构建的IIS 7.5运行良好。 当我们的AJAX POST请求(通过jQuery触发)因发布的JSON被截断而失败时,我们时不时会遇到问题。 到目前为止我们发现的是,对于所有这样的请求,请求的“Content-Length”标头包含的数据多于我们实际获得的请求数据。 我们已经在web.config中将maxRequestLength设置为51200,我相信maxAllowedContentLength的值有一个非常大的默认值(我们没有在我们的配置中设置它)。 我还有一个失败的请求,“内容长度”低至7301(字节),但我们设法只获得了2179个字节。 所以我并不怀疑这会达到任何限制。 请求有问题请求的标头如下 缓存控制:无缓存 连接:保持活力 Pragma:没有缓存 内容长度:7301 Content-Type:application / json; 字符集= UTF-8; 接受:application / json,text / javascript, / ; Q = 0.01 Accept-Encoding:gzip,deflate Accept-Language:en-us,en; q = 0.5 User-Agent:Mozilla / 5.0(Windows NT 6.1; WOW64; rv:15.0)Gecko / 20100101 Firefox / 15.0.1 X-Requested-With:XMLHttpRequest 有任何想法吗 ?? 更新 :我已经能够进一步将问题与我们的代码隔离开来。 编写了一个独立的控制器,它接受一个JSON字符串并对其进行反序列化。 如果出现错误,则会记录错误。 当我在50个请求的循环中与150个并发线程并行地触发此控制器时,我得到一些失败,其中该控制器接收的JSON被截断。 […]
我有一个文本框,每次用户输入一个字母时,我都会使用ajax请求进行搜索,并为用户显示“实时”结果。 通常,当用户键入字母时,发出请求所花费的时间比用户输入新字母所需的时间长,因此在第一个字母结束之前会发出新请求。 如果第一个可以在我做下一个请求之前结束会好得多。 如果最新请求已经结束,是否有一个很好的方法来只提出新的请求? 这是我的jquery代码: $(“#MyTextBox”).change(function() { if (this.value.length > 2) { $.ajax({ type: “GET”, url: “http://www.domain.com/Service.svc/Search?keyword=” + this.value, dataType: “json”, success: function(data) { //here I have some code that shows the result for the user } }); } });
无法让我的JQuery POST被WCF服务接受。 这是来自javascript的POST: function jqueryPost() { var url = “/LoggingTest”; $.post(url, { message: “test message” }); } 这就是我通过接口接受POST的方式: [OperationContract] [WebInvoke(Method = “POST”, UriTemplate = “/LoggingTest”, BodyStyle = WebMessageBodyStyle.Bare)] void LoggingTest(string message); 并实施: public void LoggingTest(string message) { log.Debug(message, null); } 当我调用函数jqueryPost时,我在Web检查器中看到了400 Bad Request的HTTP响应。 不确定如何让POST请求工作。 (在7/1上添加) @James,这是web检查器的输出: http:// localhost:4252 / LoggingTest HTTP信息 请求方法:POST 状态代码:400错误请求 请求标题 接受: […]