2013-07-12 280 views
0

我无法使用.ajax方法通过“POST”请求发送数据。 该脚本显示来自数据库的现有数据,然后通过 输入附加数据1)首先删除与该id相关的现有行(通过GET请求发送)和2)插入新行,如通过JSON发送的数据所反映的那样。通过.ajax发送json数据作为POST请求调用

下面是我的AJAX调用

 <script src="/jquery-1.10.2.min.js"></script> 
     <script src="/knockout-2.3.0.js"></script> 

      var collabModel = function(collab) { 
       var self = this; 
       self.collab= ko.observableArray(collab); 
      //To add empty row into the table 
       self.addcollab = function() { 
        self.collab.push({ 
         Name: "", 
         Lastname: "" 
        }); 
       }; 




self.save = function(form) { 
var loc_id=<?php echo $loc;?>; 
    var data_1_1=ko.toJSON(self.collab); 

         $.ajax({ 
          type:'POST', 
          url:'update_collab_info.php?loc_id='+loc_id, 
          // dataType: 'json', 
          data:data_1_1, 
          processData: false, 
          timeout:2000, 
           success:function(collab){ 
            alert("This looks like"+data_1_1); 
            location.href="www/" 
           } 
          }); 
      }; 
      }; 

     var data_from_database=<?php echo json_encode($result);?>; //This is to display any existing rows of information if present from the database 

     var viewModel = new collabModel(data_from_database); 
     ko.applyBindings(viewModel); 

       ===========================PHP SCRIPT(update_collab_info.php)================== 
        <?php 
       $data_1=$_POST['data_1_1']; 
       $loc_id=$_GET['loc_id']; 
       $data_2=json_decode(stripslashes($data_1)); 

       foreach($data_2 as $row){ 
       //MYSQL query PDO PREPARE statement 
    //insert ($loc_id, $row['name'],$row['lastname']) 
       } 

基本上,场到MySQL的foreach语句插入多排,其中$ loc_id仍然是所有的人都一样。 ($ loc_id是外键)。 我无法将发布数据导入到PHP脚本中。我确实得到了显示json数据的警报,但不知何故它不被脚本解释。该脚本能够响应通过URL发送的GET变量。我能够删除响应获取请求的mysql查询,但以某种方式,我从POST数据中获取作为json发送的空数组。

+0

您是否尝试过使用'console.log(data_1_1);'在AJAX调用之前? –

+0

console.log(data_1_1)中什么也没有显示; – deepseas

+0

'var data_1_1 = ko.toJSON(self.collab);'不起作用。看看它,然后回到我们身边,告诉我们你彻底研究的结果。在问这里之前,请阅读[** Stack Overflow Question Checklist **](http://meta.stackexchange.com/questions/156810/stack-overflow-question-checklist)。 –

回答

1

如果你想访问数据为$_POST["data_1_1"],你必须发送它作为后var而不是作为请求正文。

$.ajax({ 
    type: 'POST', 
    url: 'update_collab_info.php?loc_id=' + loc_id, 
    data: { data_1_1:data_1_1 }, 
    timeout: 2000, 
    success: function (collab) { 
     alert("This looks like" + data_1_1); 
     location.href = "www/" 
    } 
}); 
+0

这不起作用,但你认为URL中的get参数是问题吗? – deepseas

+0

如果是这样,这是一个PHP问题,而不是一个JavaScript问题。发送url params和post params不是问题。 –

+0

这实际上是一个PHP问题,因为我没有在json_decode($ variable,true)中包含“true”参数。无论如何,你的建议似乎是现货。谢谢凯文。 – deepseas