Javascript 如何在调用url时在HTTP POST请求中发送数据?
我编写了一个简单的jsp页面,其中我正在我的一个部门内加载一个外部网站 代码如下:Javascript 如何在调用url时在HTTP POST请求中发送数据?,javascript,html,http,Javascript,Html,Http,我编写了一个简单的jsp页面,其中我正在我的一个部门内加载一个外部网站 代码如下: <html> <head> <script src="../common/jquery-1.6.2.min.js"></script> <script> $(document).ready(function(){ $("#menu").html('<object data="www.someurl.com">').appen
<html>
<head>
<script src="../common/jquery-1.6.2.min.js"></script>
<script>
$(document).ready(function(){
$("#menu").html('<object data="www.someurl.com">').appendTo('body');;
});
</script>
</head>
<body>
<div id="menu" style="position:relative; bottom: 0; overflow:hidden;">
</div>
</body>
</html>
$(文档).ready(函数(){
$(“#菜单”).html(“”).appendTo('body');;
});
基本上,我正在做的是,我正在设置一个HTML内容,在对象标记中有一个src URL。
这是成功的,我可以加载我的部门内的网址
当我想使用HTTPPOST方法发送一些数据(可能是单个变量)时,问题就来了
有没有办法使用HTTP POST调用相同的URL
注意:这里我不能使用Jquery POST,因为是同源策略。看看Jquery POST函数: 此外,如果您想发送一些数据以及url,也可以使用get:
www.someurl.com?dataAttr=someValue&dataOtherAttr=someOtherDataValue
这相当于一篇包含以下数据的文章:
{
"dataAttr": "someValue",
"dataOtherAttr": "someOtherDataValue"
}
下面是一个纯js,它将向服务器发送帖子。该脚本生成一个不可见的iframe,并使用指定的参数调用指定的服务器。服务器必须支持跨域策略。如果您无法使服务器支持CORS,那么您就倒霉了:
/**
*
* Makes a post to the specified url with the specified param - keyval
*/
makePost = function makePost(url, params){
var iframeId = 'iframeid';
var addParamsToForm = function (form, params){
var addParamToForm = function(form, paramName, paramValue){
var input = document.createElement('input');
input.hidden = 'hidden';
input.name = paramName;
input.value = paramValue;
form.appendChild(input);
}
for ( var prop in params ){
if ( params.hasOwnProperty(prop) ){
if ( params[prop] instanceof Array ){
for ( var i = 0; i < params[prop].length; i ++ ){
addParamToForm(form, prop, params[prop][i]);
}
} else {
addParamToForm(form, prop, params[prop]);
}
}
}
};
var iframe = document.getElementById(iframeId);
if ( iframe === null ){
iframe = document.createElement('iframe');
iframe.name = 'iframeName';
iframe.id = iframeId;
iframe.setAttribute("style", "width: 0; height: 0; border: none; display: none;");
}
var form = document.createElement('form');
form.action = url;
form.method = 'POST';
form.target = iframe.name;
addParamsToForm(form, params);
iframe.appendChild(form);
document.getElementsByTagName('body')[0].appendChild(iframe);
form.submit();
}
或jquery变体:
$.ajax({
type: 'POST',
url: 'yourserver',
crossDomain: true,
data: {'someAttr':'someAttrValue', 'someOtherAttr': 'someOtherAttrValue'},
dataType: 'json',
success: function(responseData, textStatus, jqXHR) {
var value = responseData.someKey;
},
error: function (responseData, textStatus, errorThrown) {
alert('POST failed.');
}
});
有关如何配置服务器以支持CORS的提示:
看看这个:
尝试在
Iframe
中加载外部链接或网站,然后重试
<div>
<iframe id="" name="" src="your external link" ></iframe>
</div>
我不知道您是否使用php,因为并没有php标记,但您可以使用php中的HttpRequest类发布数据,而且它是安全的!
这里有一个链接:Jquery帖子在跨域中不起作用。这里的来源不同于被调用URL的域。我需要HTTP POST的解决方案。得到很容易,我们已经知道了。还有别的方法吗?由于安全问题,无法使用IFrame。
<div>
<iframe id="" name="" src="your external link" ></iframe>
</div>