2015-11-16 104 views
0

嗨我從ajax調用控制器中的操作時收到以下錯誤。未定義的索引ajax/php

未定義的索引:值。

這是我在文獻就緒

獨特功能碼來創建獨特元件的陣列。

   var modules =[]; 
       var action = []; 
       var max_limit=[]; 
       var details ={}; 

$(".btn-small").click(function() 
     { 
     modules = unique(modules); 
     action = unique(action); 
     limit = unique(limit); 

     details['id'] = id; 
     details['cost'] = sum; 
     details['modules'] = modules; 
     details['action'] = action; 
     details['limit'] = limit; 

     jsonString = JSON.stringify(details); 







    $.ajax({ 
    url: "<?php echo Yii::app()->createUrl('/xxxxxxxx/actionDemo'); ?>", 
    data: {'value':jsonString }, 
    type: 'post', 
    dataType:'json', 
    success: function() { 
        alert("st"); 
       }, 
     error: function(){ 
     alert("Error: Could not delete"); 
     } 
}); 

這是我的控制器中的操作代碼:

public function actionDemo() { 

     $val = $_POST['value']; 
     var_dump($val); 
     die(); 
}  
+1

檢查你的'jsonString'值。我認爲'null'值不是用ajax提交的。嘗試提交一個用於調試的靜態值,例如'{'value':'test'}' – Karan

+0

我使用警報檢查了值,jsonString不包含任何空值。 –

+0

是否檢查過使用'firebug'或其他工具在控制檯提交哪些數據? – Karan

回答

0

這意味着,「價值」是不是在您發佈的數據。嘗試轉儲您的POST,看看發生了什麼。

這可能是因爲您發送的是JSON,所以您的POST將包含JSON而不是Array。

+0

var_dump($ _ POST ['value']); 我試過這個,但是錯誤仍然是一樣的。 –

+0

這是因爲您正在嘗試獲取不在數組中的值。嘗試var_dump($ POST); –

+0

感謝它的工作,但我得到這個輸出:array(0){} –

-1

我認爲這會幫助你,

如果要發送JSON到服務器端,您需要指定在AJAX請求contentTypedataType:'json'說你希望從服務器得到什麼樣的迴應。

否則,您可以直接在AJAX中傳遞0​​而不轉換爲JSON。

+0

問題中的代碼不會將JSON發送到服務器。它會發送標準格式的編碼數據。 (其中一個數據編碼的數據恰好是JSON,但最外層的有效載荷不是) – Quentin