2014-09-12 3 views
0

У меня есть html-страница, которая представляет 2 формы (formone & formtwo) через ajax при нажатии одной кнопки. formone отправляется formone.php, и если он был успешно отправлен formtwo, он отправляется в formtwo.php. Все работает нормально. Кроме того, мне нужно отправить данные через POST на другой php-скрипт (на другом сервере, но пока я тестирую его на том же сервере). Я пробовал его с помощью следующего кода, но он не работает (я не получаю никаких ошибок, хотя).PHP Curl не отправляет запрос POST

Curl code я использовал!

function transferData() 
{ 
//Set up some vars 
$url = 'test.php'; 
$user = 'sampletext'; 
$pw = 'sampletext'; 

$fields = array(
      'user'=>urlencode($user), 
      'pw'=>urlencode($pw) 
     ); 

// Init. string 
$fields_string = ''; 
// URL-ify stuff 
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; } 
rtrim($fields_string,'&'); 

//open connection 
$ch = curl_init(); 

//set the url, number of POST vars, POST data 
curl_setopt($ch,CURLOPT_URL,$url); 
curl_setopt($ch,CURLOPT_POST,count($fields)); 
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string); 

//execute post 
$result = curl_exec($ch); 

//close connection 
curl_close($ch); 
} 

Это код для моей формы Ajax представления:

function submitforms() 
{ 
    FormSubmissionOne(); 
    function FormSubmissionOne() 
    { 
     //Form 1 
     var $form = $('#formone'); 
     $.ajax(
     { 
      type: 'POST', 
      url: $form.attr('action'), 
      data: $form.serialize(), 
      success: function (msg) 
      { 
       FormSubmissionTwo(); 
      }, 
      error: function(msg) 
      { 
      alert(msg); 
      } 
     }); 
    } 
    function FormSubmissionTwo() 
    { 
     //Form 2 
     var $form2 = $('#formtwo'); 
     $.ajax(
     { 
      type: 'POST', 
      url: $form2.attr('action'), 
      data: $form2.serialize(), 
      success: function (msg) 
      { 
       alert(msg); 
       //redirection link 
       window.location = "test.php"; 
      } 
     }); 
    }  
} 

Это test.php (получение сценария от завитка функции)

$one = $_POST['user']; 
    $two = $_POST['pw']; 

    echo "results:"; 
    echo $one; 
    echo "\r\n"; 
    echo $two; 
    echo "\r\n"; 
+0

Вы пробовали абсолютный путь к файлу PHP, который вы посылающего его? т. е. - 'http: // www.example.com/test.php' – Darren

+0

Я попробовал это, но я получаю тот же результат (нет результата!) – nadz

ответ

1

Есть несколько вопросов, во-первых, CURLOPT_POST для boolean не является co ЕНТ.

Так это изменить:

curl_setopt($ch,CURLOPT_POST,count($fields)); 

в

curl_setopt($ch,CURLOPT_POST, 1); // or true 

Во-вторых, вы должны сказать CURL, что вы хотите, возвращаемые данные. Вы делаете это с помощью CURLOPT_RETURNTRANSFER

Таким образом, ваш curl родственный код должен выглядеть следующим образом:

//open connection 
$ch = curl_init(); 

//set the url, number of POST vars, POST data 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string); 

//execute post 
$result = curl_exec($ch); 
print_r($result); // just see if result 
//close connection 
curl_close($ch); 
+0

Thankyou! Это сработало. :) – nadz

+0

@nadz Мое удовольствие, рад, что я мог помочь – Darren

Смежные вопросы