2013-01-09 71 views
0

我有一個Captivate培訓,我沒有LMS託管,但我想從培訓中發送數據。我寫了JavaScript來建立變量併發布到php頁面,但我無法通過發佈獲取請求。思考?JQuery JSON到MySql插入

的Javascript:

var currentTime = new Date(); 
var month = currentTime.getMonth() + 1; 
var day = currentTime.getDate(); 
var year = currentTime.getFullYear(); 

var myMovie = CaptivateController("Captivate"); 
//Retrieves the author's name, if available 
var cpInfoCourseName = myMovie.query("cpInfoCourseName"); 
var currentDate = year + "-" + month + "/" + day; 
var cpQuizInfoPassFail = myMovie.query("cpQuizInfoPassFail"); //1 = pass; 0 = fail 
var cpQuizInfoPointsscored = myMovie.query("cpQuizInfoPointsscored"); 
var cpQuizInfoQuizPassPercent = myMovie.query("cpQuizInfoQuizPassPercent"); 
var cpQuizInfoTotalCorrectAnswers = myMovie.query("cpQuizInfoTotalCorrectAnswers"); 

var jsonData = "{'cpInfoCourseName': cpInfoCourseName, 'currentDate': currentDate, 'cpQuizInfoPassFail': cpQuizInfoPassFail, 'cpQuizInfoPointsscored': cpQuizInfoPointsscored,'cpQuizInfoTotalCorrectAnswers':cpQuizInfoTotalCorrectAnswers}"; 

$.ajax({ 
    type: "POST", 
    url: "../../trainingReporting.php", 
    dataType:"application/json", 
    data: jsonData, 
    success: function() { 
     //alert("Your training results were saved and sent to your regional office."); 
     //location.href = 'http://www.occ-connect.org/seconnect/occTrainings.php';   
    }, 
    error: function() { 
       alert("Your data was not submitted"); 
    } 
}); 

PHP:

if(isset($_POST['data'])){ 
    $jsonData = $_POST['data']; 

    //get region, email and ministry position of user 
    $userInfo = mysql_query("SELECT profilevalue_8,profilevalue_9 FROM se_profilevalues WHERE profilevalue_user_id = '".$user->user_info['user_id']."'"); 

    while($r = mysql_fetch_array($userInfo)) 
    { 
     $region = $r['profilevalue_9']; 
     $ministry_position = $r['profilevalue_8']; 
    } 

    $user_id = $user->user_info['user_id']; 
    $user_email = $user->user_info['user_email']; 

    mysql_query("INSERT INTO trainingReporting (json,user_email,user_id,region,ministry_position) VALUES ('$jsonData','$user_email','$user_id','$region','$ministry_position')") or die('INSERT FAILED: '. mysql_error()); 
    echo "success!"; 

} else { 
    echo "error"; 
} 
+1

'jsonData'不是有效的JSON。把它寫成一個普通的對象,並讓jQuery進行轉換 – Andreas

回答

0

嘗試增加contentType你的Ajax調用。

$.ajax({ 
    type: "POST", 
    url: "../../trainingReporting.php", 
    dataType:"application/json", 
    data: jsonData, 
    contentType: "application/json", 
    success: function() {... 

默認情況下jQuery使用application/x-www-form-urlencoded; charset=UTF-8作爲格式,你希望它是JSON。

dataType是指定服務器返回的數據格式。

http://api.jquery.com/jQuery.ajax/

0

與jQuery,數據屬性被轉換到後的數據。所以你不會在php中使用$_POST['data'],但是你的jsonData var。所以$ _POST ['cpInfoCourseName'] ...等。或者,如果您希望所有內容都在$_POST['data']之下,那麼您可以在javascript中執行如下操作:data:{'data':jsonData},並將js var jsonData包裝在data密鑰下的對象文本中。

您還可以運行print_r($ _ POST)來顯示$ _POST中的所有數據。