2

これが可能かどうかはわかりません。このようなリンクがあります

<a id="addCart" href="http://mydomain.foxycart.com/cart?name=test-product&price=10.00">Add to Cart</a>

このリンクをクリックすると、別のサーバーの json ショッピング カートに値が送信されます。

ただし、この href リンクで同様の値を送信する必要がありますが、クリックする必要はありません。例えば:

$('.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"

ここの//hrefで!上の部分をクリックせずに。私の要求が理にかなっているといいのですが。これを達成する方法はありますか?

ありがとう

4

7 に答える 7

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;
}

上記はすべて次の順序に従います。

  1. ブラウザはOPTIONSメソッドをサーバーに送信します。これは、サーバーがクロス サイト (サーバーが許可するものは何でも) の投稿/要求を許可するかどうかを確認するためのブラウザーによる "セキュリティ" 対策です。
  2. 次に、サーバーは「Access-Control-Allow-Origin」で応答し、リクエストが「http://from.com」または安全な形式の「https: //from.com ".
  3. サーバーは問題ないので、ブラウザは要求された POST リクエストを作成します。

*注意事項

  • 送信するコンテンツ タイプをクライアントに設定させることをお勧めします。そのため、それも許可する必要があります。
  • サーバーは操作ごとに 2 つの要求を行います
  • セキュリティへの影響が高まっています。「Access-Control-Allow-Origin: *」はちょっと危険です。
  • これは、非常に古いブラウザや、おそらくモバイル ブラウザでは機能しません。
  • OPTION要求だけでなく、常に上記のヘッダーを返します。

編集:

また、Web サイト (外部) が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);
于 2013-04-10T18:15:21.370 に答える
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
    }
});
于 2013-01-31T11:40:44.897 に答える
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
   });
}
于 2013-01-31T11:45:05.713 に答える
0

私はこれを間違えましたか、しかしあなたはただやろうとしていませんか

$.ajax({
    url: "http://mydomain.foxycart.com/cart/",
    type: "get",
    data: { value : true }
});
于 2013-01-31T11:49:55.523 に答える
0

これにより、現在のサイトを離れずに URL が呼び出されます。

jQuery.ajax({
    url: 'http://mydomain.foxycart.com/cart?value=true',
    success: function(data) {}
});

JavaScriptが別のドメインで実行されている場合に備えて、別のドメインを呼び出すことができるかどうかは100%わかりません. だから多分あなたはする必要があります:

jQuery.ajax({
    url: '/cart?value=true',
    success: function(data) {}
});
于 2013-01-31T11:43:09.710 に答える
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   
    });
});
于 2013-01-31T11:59:31.887 に答える