2013-08-20 49 views
0

我試圖使用json第一次使用$ .ajax()我將複選框和其他所需數據的值賦給了一個php文件處理和張貼到mysqldb通過$ .ajax()函數的數據部分的數組,但會在我的PHP文件中獲得一個空數組[]。當我嘗試使用從我的瀏覽器的JavaScript調試工具,我得到了reprot

**Uncaught SyntaxError: Unexpected end of input jquery-1.9.0.min.js:1 
st.extend.parseJSON jquery-1.9.0.min.js:1 
(anonymous function) index.php?url=account/registration/:297 
st.event.dispatch jquery-1.9.0.min.js:2 
y.handle** 

我在我的PHP處理文件製作看起來像這樣在控制檯日誌

[checkbox1: "COM 101", semester: "1st Semester", mid: "7", checkbox2: "COM 112", checkbox3: "STA 111"…] 

checkbox1: "COM 101" 
checkbox2: "COM 112" 
checkbox3: "STA 111" 
checkbox4: "STA 112" 
checkbox5: "MTH 111" 
length: 0 
mid: "7" 
semester: "1st Semester" 

陣列我做的JSON的print_r數據,但得到的Array []作爲結果

這是我的JavaScript代碼塊「myDataArray是一個全局變量」

$('#mytable2').on('change',function(e){ 
      var rel = e.target.getAttribute('rel'); 
      console.log(e.target.value+ " "+ e.target.checked) 
      if(rel === globals.payment_target && e.target.checked===true){ 
       myDataArray[e.target.getAttribute("name")]= e.target.value; 
       myDataArray["semester"] = $("#semester").val() 
       myDataArray["mid"] = $("#mid").val() 

      } 

      if(rel === globals.payment_target && e.target.checked ===false){ 
       delete myDataArray[e.target.getAttribute("name")] 
       console.log(myDataArray) 
      } 

}); 
$('#mytable2').on('click',function(e){ 
      var rel = e.target.getAttribute('rel'); 
      console.log(e.target.value+ " "+ e.target.getAttribute('name')) 
      if(rel === globals.payment_target && e.target.value =="Register"){ 
       console.log(myDataArray) 
       var jsonstring = $.parseJSON(myDataArray); 
       var myglob =JSON.stringify(globals) 
       console.log(myglob) 
       $.ajax({url:'courseregistration.php', type:'POST',data:{data:jsonstring},success: function(result){ 
         $('#putmehere').html("<h4 style='text-align:center'>"+result+"</h4>") 
         alert(result) 

        } 
       }) 

      } 

     }); 

這個PHP文件是什麼樣子

$data = json_decode($_POST['data']); 
print_r($data); 

我只是想不通的問題是什麼。有人可以告訴我什麼是錯的方式,我正在做或建議更好的方式

回答

0

您的網頁不工作的原因是關鍵的錯誤(您的第一個上市)。您需要先清除此錯誤,然後才能執行其他任何操作,因爲表單沒有按照您的要求提交。

錯誤的原因:可能是一個損壞的文件 - 下載jQuery的另一個副本,然後再試一次。

+0

我得到了最新版本的jquery,並替換了我正在使用的一個,但仍然得到了第一個列表的相同錯誤,正如您指出的那樣 –

+0

您使用了哪些其他jQuery插件,因爲這些可能會導致問題。 – jeff

+0

我正在使用基礎框架與它javascripts。我刪除了這個--- $ .parseJSON(myDataArray)---並且錯誤沒有再來,我用JSON.stringify代替。我也宣佈myDataArray作爲一個對象,而不是一個數組,事情進​​展順利!謝謝 –

1

嘗試設置在PHP腳本的數據類型屬性JSON

$.ajax({ 
    url:'courseregistration.php', 
    type:'POST',data:{data:jsonstring}, 
    datatype:"json", 
    success: function(result){ 
    $('#putmehere').html("<h4 style='text-align:center'>"+result+"</h4>") 
    alert(result) 

    } 
    }); 

還設置內容類型。

header('Content-Type: application/json'); 
+0

謝謝你的幫助 –

0

我刪除了這個--- $ .parseJSON(myDataArray)---和錯誤沒來,我再次使用JSON.stringify(myDataArray)來代替。此外,我宣佈myDataArray作爲一個對象,而不是作爲一個陣列,事情都很好,它解決了未捕獲的語法錯誤:問題

首先,我聲明myDataArray作爲數組

var myDataArray = new array(); 

,但是當我改變myDataArray到對象

var myDataArray = new Object; 

我如下效果的話,事情就罰款

$('#mytable2').on('click',function(e){ 
      var rel = e.target.getAttribute('rel'); 
      console.log(e.target.value+ " "+ e.target.getAttribute('name')) 
      if(rel === globals.payment_target && e.target.value =="Register"){ 
       console.log(myDataArray) 
       console.log(globals) 
       var jsonstring = JSON.stringify(myDataArray); 
       console.log(myglob) 
       $.ajax({url:'courseregistration.php',dataType:"json", type:'POST',data:{data:jsonstring},success: function(result){ 
         $('#putmehere').html("<h4 style='text-align:center'>"+result+"</h4>") 
         alert(result) 

        } 
       }) 

      } 

     });