2016-10-14 45 views
2

我有一個對象,我在一個AJAX請求發送:通過AJAX和PHP使用POST發送數據

function send_value() { 
    $.ajax({ 
     type: 'post', 
     url: 'get.php', 
     data: { 
      source1: "some text", 
      source2: "some text 2", 
      uniId: 3 
     }, 
     success: function (data) { 
      console.log(data); 
     } 
    }); 
    return false; 
} 

我試圖將它們貼在按鈕的點擊

<head> 
    <script src="./script.js"></script> 
    <script src="//code.jquery.com/jquery-1.12.0.min.js"></script> 
</head> 
<body> 
    <form action="get.php" method='post' name='sendform' onSubmit='send_value()'> 
     <input type='submit' value='Test1'> 
    </form> 
</body> 

然後我打印使用PHP變量:

<?php 
    if (!empty($_POST["uniId"])) 
    { 
     if ($_POST["uniId"] == 3) 
     { 
      echo 'your logged in as '; 
      echo $_POST['uniId']; 

      $src1 = $_POST['source1']; 
      $src2 = $_POST['source2']; 
      echo $src1; 
      echo $src2; 
     } 
     else 
     { 
      echo 'sorry uniID is not correct'; 
     } 
    } 
    else 
    { 
     echo "Im sorry the page was not able to load "; 
     var_dump($_POST); 
    } 

現在uniID3所以我希望看到:

your logged in as 3 some text some text2 

而是我得到:

Im sorry the page was not able to load 
C:\wamp64\www\mysite\get.php:20: 
array (size=0) 
empty 

的變量沒有被貼在我的PHP打印出什麼是錯在我的代碼?

謝謝

+0

刪除'行動=「get.php」'從表單並添加月底返回Ajax請求虛假 – devpro

+0

謝謝,但嘗試這樣做,它劑量不起作用 –

回答

0

你錯過了具體的數據類型

 function send_value() { 
$.ajax({ 
    type: 'POST', 
    url: 'get.php', 
    dataType: "json", 
    data:({"uniId":"test"}), 
    success: function (data) { 
     console.log(data); 
    } 
}); 
return false; 

}

+0

和形式如

+0

你試過這樣嗎? –

+0

是的,我有。仍然得到數組(大小= 0)與vardump –

1

問題是因爲你沒有阻止標準表單提交。因此,您的form元素沒有數據發送,因爲它不包含表單控制元素。

爲了解決這個問題,你可以在函數返回輸出到事件處理程序:

<form action="get.php" method="post" name="sendform" onsubmit="return send_value()"> 

但是和更好的方法是使用附加不顯眼JS的submit事件並阻止標準形式提交。當你正在使用jQuery已經,這裏是你如何能做到這一點:

$(function() { 
    $('form').on('submit', function(e) { 
     e.preventDefault(); 
     $.ajax({ 
      type: 'post', 
      url: 'get.php', 
      data: { 
       source1: "some text", 
       source2: "some text 2", 
       uniId: 3 
      }, 
      success: function (data) { 
       console.log(data); 
      } 
     }); 
    }); 
}); 
<form action="get.php" method='post' name='sendform'> 
    <input type='submit' value='Test1'> 
</form> 
+0

感謝@Rory,但似乎沒有解決問題 –

+0

這是爲什麼?任何錯誤消息?您嘗試使用哪種方法? –

+0

沒有它與以前一樣打印出來,也沒有獲取變量 –

0

請使用此表的代碼

<head> 

     <script src="//code.jquery.com/jquery-1.12.0.min.js"></script> 
</head> 
<body> 
    <form action="get.php" method="post" name="sendform" onsubmit="return send_value();"> 
     <input type='submit' value='Test1'> 
    </form> 
</body> 
<script> 

function send_value() { 
    $.ajax({ 
     type: 'post', 
     url: '2.php', 
     data: { 
      source1: "some text", 
      source2: "some text 2", 
      uniId: 3 
     }, 
     success: function (data) { 
      console.log(data); 
     } 
    }); 
    return false; 
} 

</script> 

「get.php」 FILE

<?php 
print_r($_POST); 
    if (!empty($_POST["uniId"])) 
    { 
     if ($_POST["uniId"] == 3) 
     { 
      echo 'your logged in as '; 
      echo $_POST['uniId']; 

      $src1 = $_POST['source1']; 
      $src2 = $_POST['source2']; 
      echo $src1; 
      echo $src2; 
     } 
     else 
     { 
      echo 'sorry uniID is not correct'; 
     } 
    } 
    else 
    { 
     echo "Im sorry the page was not able to load "; 
     var_dump($_POST); 
    } 
    ?> 

這是主要的東西:

<form action="2.php" method="post" name="sendform" onsubmit="return send_value();"> 
+0

這個工作是否像局部通過wamp一樣工作,因爲它不適用於我? –

+0

我只是得到數組(大小= 0) –

+0

我也檢查了wamp。請在表單action屬性和ajax url參數中使文件名正確。 –