首先,这不是设置页面的理想方式,但是需要将脚本分发为1个文件.
我在一个带有javascript的xhtml文档的顶部有一个php脚本,并且在某些条件下使用XHR将查询字符串发送到页面本身.然后顶部的php激活,并将传递的内容存储为会话,然后自行终止(exit()).XHR是异步的,永远不会检查它是否返回内容.
但是在Firefox 3中,no element found每次发送XHR请求时,错误控制台都会抛出错误.此外,如果我使用退出程序exit('Done'),Firefox会抛出(完成)语法错误,就像将其插入可见DOM一样.这似乎不会发生在Opera中.
有没有更好的方法来存储已经生成的xhtml页面的会话?显然我可以XHR到另一个页面,但我更愿意将它全部保存在一个脚本上.Firefox是否将XHR请求视为对DOM的更新?我不知道它为什么发送这个错误.
更新正如我所说,firefox只在发出XHR请求时才会出错.该页面是有效的XHTML并且完美无缺,除非对页面本身发出XHR请求.
我想知道它为什么发送错误,因为它确实没有返回任何东西.
这是一个从对象发出ajax请求的javascript片段.它创建一个XHR对象,没有回调函数,并发布信息.不引用同一页面时,它可以正常工作.
var saveState = { saveContent: function(updateActiveMenu) {
var sendState = new ajaxObject(gV.url);
if (!updateActiveMenu) {
var storageContainer = document.getElementById("StorageContainer").innerHTML;
var menu = document.getElementById("Nav").innerHTML;
sendState.update("Containerstring="+urlencode(storageContainer)+"&Nav="+urlencode(menu)+"&Active="+gV.activeMenuItem, 'POST', true); } }, }
Run Code Online (Sandbox Code Playgroud)
而php就是这样做的
if (isset($_REQUEST['Containerstring']) && isset($_REQUEST['Nav']) && isset($_REQUEST['Active'])) {
$_SESSION['Containerarray'] = (saveContainer(regulateEscapes(urldecode($_REQUEST['Containerstring']))));
$_SESSION['Navarray'] = (saveNav(regulateEscapes(urldecode($_REQUEST['Nav']))));
$_SESSION['Active'] = $_REQUEST['Active'];
exit('Done');
}
Run Code Online (Sandbox Code Playgroud)
我也知道我不应该使用innerHTML,但这是另一个故事
错误就是这个
Error: no element found
Source File: http://localhost/ajax.php?1244648094055
Line: 1
Run Code Online (Sandbox Code Playgroud)
请注意,在我正在使用的php页面上,错误引用了一个永远不会被调用的查询字符串.
我有一个页面在提交表单时发送XHR请求,并且我希望Chrome在收到回复时中断.似乎完成此操作的最佳方式是,如果Chrome有一个我可以调用的javascript函数,它会破坏执行,但到目前为止我一直无法找到类似的东西.还有其他解决方案吗?
编辑:
我实际上没有为请求定义回调,所以我不能这样设置断点.使用这行jquery代码发送请求:
$.post(this.action, $(this).serialize(), null, "script");
Run Code Online (Sandbox Code Playgroud)
哪里this是表单元素.该null论点是,你通常会定义一个回调,但与"script"论证,生JavaScript是由服务器返回,然后直接执行的,所以它似乎打破和单步执行代码与唯一的方法debugger;声明.这是有效的,但是当单步执行代码时,你实际上看不到你在哪一行,所以它有点尴尬.我怀疑这是Chrome调试工具的限制.
我最近一直在向Safari移植Chrome扩展程序,并遇到了这种错误(错误,功能等)
因此,在全局页面中,我向安全页面发出XMLHTTP请求,该页面仅在您登录后才可用.
例:
似乎全局页面有一些自己的cookie,所以一个安全的页面认为我是新的
ps:在Chrome中,我可以加载该页面,它认为我代表登录用户,所以我猜Safari中有一些限制
pps:我听说在Safari中有一个Block第三方cookie选项,但即使我检查它"永不阻止"它仍然无法正常工作
首先,我想说清楚我不是在讨论这个问题在流行的浏览器中允许多少并发AJAX(XmlHttpRequest)请求?,这是关于同时请求.
相反,我想知道在浏览器可能开始取消它们或抛出错误之前,是否存在对待处理的ajax请求数量的限制.
运行一些简单的测试,我已经看到,当达到大约6个并发请求的限制时,浏览器将以优雅的方式开始排队请求.一旦"插槽"变为可用,就会使用它并向服务器发送新请求.
我还看到Chrome,Firefox甚至IE都会优雅地处理大约100个请求的队列.
我正在用JavaScript编写一些代码.在这段代码中我想读一个json文件.该文件将从URL加载.
如何在JavaScript中的对象中获取此JSON文件的包含?
这是我的JSON文件,位于../json/main.json:
{"mainStore":[{vehicle:'1',description:'nothing to say'},{vehicle:'2',description:'nothing to say'},{vehicle:'3',description:'nothing to say'}]}
Run Code Online (Sandbox Code Playgroud)
我想在我的table.js文件中使用它像这样:
for (var i in mainStore)
{
document.write('<tr class="columnHeaders">');
document.write('<td >'+ mainStore[i]['vehicle'] + '</td>');
document.write('<td >'+ mainStore[i]['description'] + '</td>');
document.write('</tr>');
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试从HTTP页面到HTTPS服务进行跨域Web服务调用.
我在服务器上设置了正确的CORS头(它与HTTP-HTTP和HTTPS-HTTPS一起使用).
如果我将请求更改为JSONp,它确实有效.
我在Chrome和Firefox中看到的是HTTPS请求永远不会被发送,它会立即中止,服务器永远不会看到请求.
值得注意的是,预检OPTIONS请求被中止(并且它没有到达服务器).
我找不到任何解释这确实不可能的来源(HTTP到HTTPS)和更好的解释原因.我可以理解HTTPS到HTTP是不安全的,但其他方式应该是好的吗?这对我来说似乎很愚蠢,因为JSONp有效(但它很麻烦).
笔记
我也withCredentials设置了true,我发送一些自定义标头和自定义Content-Type:application/json
我正在使用常规XMLHTTPRequest和JSONp的后备,IE <= 9
我正在尝试将XMLHttpRequest发送到粘贴网站.我正在发送一个包含api所需的所有字段的对象,但我一直在遇到这个问题.我已经阅读了这个问题,我想:
httpReq.setRequestHeader('Access-Control-Allow-Headers', '*');
Run Code Online (Sandbox Code Playgroud)
会解决它,但事实并非如此.有没有人有关于此错误的信息和/或我如何解决它?
这是我的代码:
(function () {
'use strict';
var httpReq = new XMLHttpRequest();
var url = 'http://paste.ee/api';
var fields = 'key=public&description=test&paste=this is a test paste&format=JSON';
var fields2 = {key: 'public', description: 'test', paste: 'this is a test paste', format: 'JSON'};
httpReq.open('POST', url, true);
console.log('good');
httpReq.setRequestHeader('Access-Control-Allow-Headers', '*');
httpReq.setRequestHeader('Content-type', 'application/ecmascript');
httpReq.setRequestHeader('Access-Control-Allow-Origin', '*');
console.log('ok');
httpReq.onreadystatechange = function () {
console.log('test');
if (httpReq.readyState === 4 && httpReq.status === 'success') {
console.log('test');
alert(httpReq.responseText);
}
};
httpReq.send(fields2);
}());
Run Code Online (Sandbox Code Playgroud)
这是确切的控制台输出:
good
ok
Failed to load …Run Code Online (Sandbox Code Playgroud) 我正在使用对象的Key和删除标记的VersionID尝试删除标记的deleteObject请求.
由于CORS,浏览器(Chrome 34.0.1847.11)向以下网址发送OPTIONS预检请求:http://bucket.s3-us-west-2.amazonaws.com/Folder/File.ext?versionId = 0123456789
Amazon S3使用以下XML主体响应400(错误请求):
<?xml version="1.0" encoding="UTF-8"?>
<Error>
<Code>InvalidArgument</Code>
<Message>This operation does not accept a version-id.</Message>
<ArgumentValue>0123456789</ArgumentValue>
<ArgumentName>versionId</ArgumentName>
<RequestId>12345</RequestId>
<HostId>1122334455</HostId>
</Error>
Run Code Online (Sandbox Code Playgroud)
因为XMLHttpRequest返回400(错误请求),所以DELETE请求永远不会被执行.我的印象是AWS没有正确处理选项请求.如果有解决方法,那就太棒了!
我当前的CORS策略是:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>HEAD</AllowedMethod>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>DELETE</AllowedMethod>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
Run Code Online (Sandbox Code Playgroud)
仅供参考:我正在使用AWS SDK for JS 2.0.0-rc10
先感谢您.
编辑1:我尝试添加,<AllowedMethod>OPTIONS</AllowedMethod>但亚马逊返回Found unsupported HTTP method in CORS config. Unsupported method is OPTIONS
编辑2:
选项请求/响应标头:
Remote Address: *********:443
Request URL: https://bucket.s3-us-west-2.amazonaws.com/path/to/file_name?versionId=0123456789
Request Method: OPTIONS
Status Code: …Run Code Online (Sandbox Code Playgroud) javascript xmlhttprequest amazon-s3 amazon-web-services cors
我试图在 django 中学习 ajax 但是当我运行这个简单的测试时我得到了这个错误并且我找不到原因,我的 django 版本是 4.0
AttributeError: 'WSGIRequest' object has no attribute 'is_ajax'
Run Code Online (Sandbox Code Playgroud)
视图.py
from django.shortcuts import render, HttpResponse
def home(request):
return render(request,'myapp/index.html')
def ajax_test(request):
if request.is_ajax():
message = "This is ajax"
else:
message = "Not ajax"
return HttpResponse(message)
Run Code Online (Sandbox Code Playgroud)
urls.py
urlpatterns = [
path('',views.home,name='home'),
path('ajax_test/', views.ajax_test, name='ajax_test')
]
Run Code Online (Sandbox Code Playgroud)
索引.html
<button id="btn">click me!</button>
<script>
$("#btn").click(function () {
$.ajax({
type: "GET",
url: "{% url 'ajax_test' %}",
success: function () {
console.log("done");
},
error: function () {
console.log("error");
},
});
}); …Run Code Online (Sandbox Code Playgroud) 我试图在React组件中设置iframe的内容,但我无法做到.我有一个组件,其中包含一个函数,当iframe完成加载时必须调用该函数.在该函数中,我正在设置内容,但似乎根本没有调用onload函数.我在chrome浏览器中测试它.我正在尝试以下方法:
var MyIframe = React.createClass({
componentDidMount : function(){
var iframe = this.refs.iframe.getDOMNode();
if(iframe.attachEvent){
iframe.attacheEvent("onload", this.props.onLoad);
}else{
iframe.onload = this.props.onLoad;
}
},
render: function(){
return <iframe ref="iframe" {...this.props}/>;
}
});
var Display = React.createClass({
getInitialState : function(){
return {
oasData : ""
};
},
iframeOnLoad : function(){
var iframe = this.refs.bannerIframe;
iframe.contentDocument.open();
iframe.contentDocument.write(['<head></head><style>body {margin: 0; overflow: hidden;display:inline-block;} html{ margin: 0 auto; text-align: center;} body > a > img {max-width: 100%; height: inherit;}', extraCss, '</style></head><body>', this.state.oasData.Ad[0].Text, '</body>'].join(''));
iframe.contentDocument.close();
},
setOasData : function(data){ …Run Code Online (Sandbox Code Playgroud)