4

JSONP Ajax リクエスト (client.htm から proxy.htm へ) を送信しようとしています。これは、別の異なる Ajax JSONP リクエストをサービス (proxy.htm ---> service.php) に作成するプロキシ ページによって受信されます。 . 現時点では、プロキシ ページはサービスから JSON 形式のオブジェクトを受け取りますが、オブジェクトを最初の最初の Ajax 要求に返すことに固執しています。私が実行しようとしているサンプルコードの場合は次のとおりです。これはJavascriptで可能ですか?もしそうなら、どうすればオブジェクトをclientCallback関数に返すことができますか?

Client.htm

// CLIENT ---> PROXY
$(document).ready(function () {
     $.ajax({
            type: 'GET',
            url: 'http://localhost/jsonp_proxy/listener.htm',
            dataType: 'jsonp',
            jsonpCallback: "clientCallback",
            success: function (theData) {
              alert("Success");
            },
            error: function (xhr, ajaxOptions, thrownError) {
              alert("Error");
            }
        });
      });
      window.clientCallback = function(results) {
        alert(results.uid);
      }

Proxy.htm

      // PROXY ---> SERVER
      $(document).ready(function () {
        $.ajax({
          type: 'GET',
          url: 'http://localhost/jsonp_server/service.php',
          dataType: 'jsonp',
          jsonpCallback: "proxyCallback",      
          success: function (theData) {
//          alert("Success");
          },
          error: function (xhr, ajaxOptions, thrownError) {
//          alert("Error");
          }
        });
      });
      window.proxyCallback = function(resultData) {
        // HOW TO CALL CLIENT CALLBACK FUNCTION
      }

Service.php

<?php
echo "proxyCallback("."{'uid': 123, 'username': 'jdirt', 'name': 'Joe Dirt'}".");";
?>
4

2 に答える 2

1

のいくつかの半有効な用途の 1 つeval:

success: function (theData) {
  eval("(" + theData + ")");
  //alert("Success");

念のためにJSONP言っておきますが、これはハッキングとセキュリティ リスクのようなものです。あなたはサードパーティに多くの信頼とコントロールを与えています。

于 2012-09-19T17:18:44.677 に答える
0

window.proxyCallback から window.clientCallback を呼び出すだけです。

于 2012-09-19T17:21:35.887 に答える