【问题标题】:PHP proxy ajax doesn't return a response for POSTPHP 代理 ajax 不返回对 POST 的响应
【发布时间】:2011-11-14 15:32:37
【问题描述】:

我正在使用以下 PHP 代理:

//Store the URL
$jURL = $_POST['jURL'];
//Store the POST data
$jData = $_POST['post_data'];

//And let cURL work it's magic.
$ch = curl_init();

//Set the URL
curl_setopt($ch, CURLOPT_URL, $jURL);
//Enable POST data
curl_setopt($ch, CURLOPT_POST, true);
//Use the $pData array as the POST data
curl_setopt($ch, CURLOPT_POSTFIELDS, $jData);

//curl_exec automatically writes the data returned
$response = curl_exec($ch);
curl_close($ch);
echo $response;

我是这样称呼它的:

  var dataString = { 'Contact': Contact, 'address1': address1, 'address2': address2, 'city': city, 'state': state, 'zip': zip, 'Phone1': primPhone, 'Phone2': secPhone, 'email': email,
                               'key2': key2, 'key5': key5, 'uhsgradyr': uhsgradyr, 'uhighlevel': uhighlevel, 'ucourseint': ucourseint, 'uCampaignID': uCampaignID, 'utextperm':utextperm,
                               'uleaddate': uleaddate, 'uleadtime':uleadtime};

                var postData = {jURL: 'http://test.com/candidate_test.php', postData: dataString};
                $.ajax({
                        type: "POST",
                        url: "proxy.php",
                        data: postData,
                        success: function(data) {
                                 window.location = "thankyou.php";
                        },
                        error:function(xhr, ajaxOptions, thrownError){
                                 console.log(xhr.responseText);
                        }
                });

问题是为什么我仍然没有得到任何回复?

【问题讨论】:

    标签: php ajax curl forms


    【解决方案1】:

    好的,我实际上去了网站..你需要替换一些javascript:

    $(".Submit").click(function() { 
    

    应该是

    $('#form').submit(function(ev) {
        ev.preventDefault();
    

    在目前的代码中,您永远不会说“停止表单提交并对 ajax 做出反应”,这是 ev.preventDefault() 为您所做的。


    旧答案: 您应该再设置一个选项:

    curl_setopt(CURLOPT_RETURNTRANSFER, true);

    确保$response 实际上包含 curl 的响应。请参阅curl_exec() 上的文档。

    【讨论】:

    • 谢谢,您还发现什么问题吗?我对那里的 dataString 有点困惑
    • @aherlambang:您确定“php 代理”有效吗? IE。用您自己的变量替换 $_POST 中的所有内容并自行调用 php 文件。此外,请确保通过 Chrome 的网络检查器或 Firefox Firebug 中的网络选项卡检查 ajax 调用。
    • 我将代理放在 URL adityaherlambang.com/proxy.php 中,当我对该 URL 进行卷曲时,它会发出响应。你可以试试 curl -d "jURL=http%3A%2F%2Fdev.degreeamerica.com%2Fcandidate_test.php" adityaherlambang.com/proxy.php
    • 好吧好吧!浏览器对 ajax 调用有何看法? (我之前评论的第二部分)
    • 它没有给出响应和错误.. 再次,您可以在 adityaherlambang.com 现场试用
    【解决方案2】:

    这可能是因为您设置的是 jData = $_GET['post_data']; 而不是 jData = $_POST['post_data'];

    在您的 jQuery .ajax() 调用中,您正在设置 type: "POST",因此数据将位于 $_POST 而不是 $_GET

    【讨论】:

    • 这样做并没有帮助,上面的 php 代理是否应该创建 AJAX 响应?
    • 当您说“没有得到响应”时,您是指 PHP 代理脚本还是 HTML 页面?如果它在 HTML 页面中,那就不足为奇了,因为您永远不会从 PHP 文件中输出任何内容。 curl_exec 自身不输出任何内容。
    • 它在 HTML 页面中。我可以在 PHP 代理脚本中看到输出。那么如何在代理脚本中的 PHP 文件中输出?我试图回应 curl_exec,但我仍然什么也没看到
    • PHP 文件?您在问题中没有提及 PHP 文件(除了代理 PHP 代码。请使用相关信息更新问题。您要达到什么目的?预期结果是什么?实际结果是什么?
    • 我的意思是 PHP 代理代码,这就是我拥有的所有 PHP ......代理代码在上面..请指教
    猜你喜欢
    • 2010-11-06
    • 1970-01-01
    • 1970-01-01
    • 2013-10-12
    • 2018-09-11
    • 1970-01-01
    • 2016-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多