我不确定这是否可行。我有这样的链接
<a id="addCart" href="http://mydomain.foxycart.com/cart?name=test-product&price=10.00">Add to Cart</a>
点击此链接会将值发送到另一台服务器上的json购物车。
但是我有一种情况,我需要使用此href链接发送类似的值但不单击。 e.g:
$('.name').each(function() {
while (y < data.products.length-1) {
if($(this).text() === data.products[x].name) {
$('.price').eq(x).text(data.products[x].price);
//href here!
}
x++;
y++;
}
x=0;
y=0;
});
我需要传递这个href:
href="http://mydomain.foxycart.com/cart?value=true"
在这里// pref中的!上面的部分,没有被点击。我希望我对我的要求有意义。有没有办法实现这个目标?
由于
答案 0 :(得分:1)
您的问题的简短答案是是,您可以这样做。但是,它要求您在另一方具有访问权限,以便以接受跨站点请求的方式修改脚本。但是你应该非常小心,因为这意味着许多安全风险。
可以这样做:
链接:
<a href="http://mydomain.foxycart.com/cart?value=true" id="send_without_click">There is a link</a>
Javascript / JQuery代码:
$(document).ready(function () {
var a_handler = "#send_without_click";
var $a = $(a_handler);
var a_url = $a.attr('href');
$.ajax({
type: 'POST',
url: a_url,
crossDomain: true,
data: {
href: a_url
},
beforeSend: function () {
//Do something before send. If not just remove the "beforeSend" part...
},
success: function (responseData, textStatus, jqXHR) {
//the responseData is what you will get as response from the server
var value = responseData.someKey;
},
error: function (responseData, textStatus, errorThrown) {
alert('POST failed.');
}
});
});
在服务器端,接收发布请求的页面必须定义一些标头才能接收AJAX调用。这将允许您的脚本进行跨域POST,GET和OPTIONS。这是PHP中的一个例子:
示例文件 cart.php
switch ($_SERVER['HTTP_ORIGIN']) {
case 'http://from.com': case 'https://from.com':
header('Access-Control-Allow-Origin: '.$_SERVER['HTTP_ORIGIN']);
header('Access-Control-Allow-Methods: POST, GET, OPTIONS');
header('Access-Control-Max-Age: 1000');
header('Access-Control-Allow-Headers: Content-Type');
break;
}
以上所有内容将遵循以下顺序:
* 备注强>
如果您知道网站(外部)正在使用 JSONP Ajax,我还找到了一种检索数据的方法。
//JSON format:
{"name":"stackoverflow","id":5}
//JSONP format:
func({"name":"stackoverflow","id":5});
如果您知道 example.com 正在提供看起来像JSONP的JSON文件,那么您可以使用这样的代码来检索它,即使您不在 example.com上域名:
function func(json){
alert(json.name);
}
var elm = document.createElement("script");
elm.setAttribute("type", "text/javascript");
elm.src = "http://example.com/jsonp";
document.body.appendChild(elm);
答案 1 :(得分:0)
试试这个
window.location="http://mydomain.foxycart.com/cart?value=true";
或强>
window.location.href="http://mydomain.foxycart.com/cart?value=true";
然而,如果这是您想要的话,这会将浏览器带到该位置
或者不离开页面..你可以使用ajax。
jQuery.ajax({
type: 'post',
url: 'http://mydomain.foxycart.com/cart?value=true',
success: function(data) {
// do your stuff
}
});
答案 2 :(得分:0)
这将调用网址而不会离开您所在的网站。
jQuery.ajax({
url: 'http://mydomain.foxycart.com/cart?value=true',
success: function(data) {}
});
我不是百分百确定你是否可以调用另一个域,以防javascript在另一个域上运行。所以也许你需要这样做:
jQuery.ajax({
url: '/cart?value=true',
success: function(data) {}
});
答案 3 :(得分:0)
var href = "...";
if($(this).text() === data.products[x].name) {
$('.price').eq(x).text(data.products[x].price);
//put this code
$.ajax(href, function(resp) {
//do something
});
}
答案 4 :(得分:0)
我弄错了,但你不是只想做
$.ajax({
url: "http://mydomain.foxycart.com/cart/",
type: "get",
data: { value : true }
});
答案 5 :(得分:0)
您可以使用JSON.parse解析Url的Href值,并使用您的循环等进行处理。也可以点击链接...
点击此处http://jsfiddle.net/RKc6f/
$(function() {
$("#addCart").on('click', function(e) {
var url = $(this).attr("href");
var urlParams = url.substring(url.indexOf("?")+1);
var myProduct = (JSON.parse('{"' + decodeURI(urlParams.replace(/&/g, "\",\"").replace(/=/g,"\":\"")) + '"}'));
console.log(myProduct.name);
console.log(myProduct.price);
//do the processing
e.preventDefault();//preven going to other page
});
});
答案 6 :(得分:0)
可能有点迟,但由于没有接受答案,也没有人提及: 您还可以使用虚拟图像元素并将您的URL传递给它的src,从而导致没有CORS限制的get请求。沿着这些方向:
var getter = document.createElement('img');
getter.src = href; //url got from the $('#addCart') element or whatever you need