2015-11-16 135 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