PHP прокси ajax не возвращает ответ для POST - PullRequest
0 голосов
/ 11 сентября 2011

Я использую следующий прокси-сервер 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);
                        }
                });

Проблема заключается в том, почему я до сих пор не получаю ответ?

Ответы [ 2 ]

1 голос
/ 11 сентября 2011

Хорошо, я на самом деле зашел на сайт .. Вам нужно заменить какой-нибудь javascript:

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

должно быть

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

В настоящем коде вы никогда не говорите «остановите отправку формы и отреагируйте на ajax», что ev.preventDefault() делает для вас.


Старый ответ: Вы должны установить еще одну опцию:

curl_setopt(CURLOPT_RETURNTRANSFER, true);

, чтобы убедиться, что $response действительно содержит ответ локона. См. Документацию по curl_exec().

1 голос
/ 11 сентября 2011

Это может быть потому, что вы устанавливаете jData = $_GET['post_data']; вместо jData = $_POST['post_data'];

В вашем вызове jQuery .ajax() вы устанавливаете type: "POST", поэтому данные будут в $_POST, а не $_GET.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...