0

我正在ajax call使用下面提到的脚本在不同的服务器上发送。

$(document).ready(function() {
var uniqcod=$(".piczhu-widget").attr('id'); 

    $.ajax({
        url:'File Path...',
        type:'post',
        data:{uniId:uniqcod},
        success: function(result){
            $('.abcClass').html(result);
            }
        });
    });

脚本没有收到任何响应。该脚本在同一台服务器上运行良好。是否有任何其他参数可用于在不同服务器上发送呼叫?

4

4 回答 4

1

这应该使用JSONP解决问题:

$.ajax({
    url:'File Path...',
    type:'post',
    data:{uniId:uniqcod},
    dataType: 'jsonp', // use JSONP
    success: function(result){
        $('.abcClass').html(result);
        }
    });
});
于 2013-04-08T05:44:27.230 回答
1

这是因为跨域策略。这是一个安全的事情。我建议您将该请求发送到位于您的服务器(您的域)上的带有 cURL 的 PHP 文件。

但是你需要在你的服务器上安装 cURL:http: //curl.haxx.se/ 如果你使用的是基于 Debian 的服务器,你可以这样做:sudo apt-get install php5-curl

例子:

<?php
$data = $_POST['data'];

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "URL FOR REQUEST");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                                                                     
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);    
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                                                                                                                                                                           

$result = curl_exec($ch);

echo $result;

?>
于 2013-04-08T05:52:13.273 回答
0

您需要将 jsonp 或 cors 用于跨域 ajax。下面给出的代码是 cors 的示例

示例代码:

jQuery.support.cors = true; 

function CrosDom_ajax(url) {
        if (window.XDomainRequest
        && $.browser.msie
        && $.browser.version < 10) {
        xdr = new XDomainRequest();
        if (xdr) {
            xdr.onload = function () {
               alert(xdr.responseText);

            };
            xdr.open("get", url);
            xdr.send();
        }
        }
        else {
            $.ajax({
                url: url,
                success: function (response) {


                },
                error: function (data) {
                }
            });
         }
    }

您还需要在服务器端编写以下代码,以允许跨域访问

Response.AppendHeader("Access-Control-Allow-Origin", "*");           
于 2013-04-08T05:41:36.563 回答
0

最佳且被接受的方法是使用 JSONP 与不同的服务器进行通信。JSONP 是解决跨域脚本错误的好方法。

阅读以下链接

JSONP 到底是什么?

带有 jquery 的 jsonp

JSON 和 JSONP 有什么区别?

http://api.jquery.com/jQuery.getJSON/

于 2013-04-08T05:43:18.810 回答