0

我使用 curl 将请求发送到另一个页面并将值返回给 ajax,我阻止了 curl 重定向到另一个页面,只是将值返回给 ajax 但我从 ajax 收到的最终结果包含 html 代码,我的代码:

php:

                $ch = curl_init();
                curl_setopt($ch, CURLOPT_URL, 'http://abc.com');
                curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
                curl_setopt($ch, CURLOPT_MAXREDIRS, 0);
                curl_setopt($ch, CURLOPT_RETURNTRANSER, 0);
                curl_setopt($ch, CURLOPT_POST, 1);
                curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
                $data = curl_exec($ch);
                curl_close($ch);
                echo 'my value';

阿贾克斯:

jQuery.ajax({
                type: "POST",
                url: "http://pagephp.com",
                data: data,
                success: function(result) {
                    alert(result);
                }
           });

警报将显示:<html>...</html> my value

帮我

4

1 回答 1

0

您需要启用CURLOPT_RETURNTRANSFERtrue/1,然后 curl_exec 的返回值将是您成功操作的实际结果。换句话说,它不会TRUE成功返回。虽然它会FALSE在失败时返回。

http://php.net/manual/en/function.curl-exec.php

您应该启用CURLOPT_FOLLOWLOCATION重定向选项,但如果您的服务器处于 safe_mode 和/或 open_basedir 有效,这可能会导致 curl 问题。

header('Content-type: application/json');

            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, 'http://abc.com');
            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
            curl_setopt($ch, CURLOPT_MAXREDIRS, 0);
            curl_setopt($ch, CURLOPT_RETURNTRANSER, 1);
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
            $data = curl_exec($ch);
            curl_close($ch);
            echo json_encode('my value');

查询

 jQuery.ajax({
                type: "POST",
                url: "http://pagephp.com",
                data: data,
                success: function(result) {
                    alert(result);
                }
           });
于 2013-10-23T17:31:58.203 回答