如何在没有这些错误的情况下将val传递给val:注意:未定义的索引

时间:2012-06-12 12:19:26

标签: php javascript var

这是一个在php的<a>标签中制作的主题选择器。用户点击触发器后,该函数会将原始<a>标记中的值传递给另一个<input>标记以供显示。然后当用户提交表单时,会调出ajaxForm来处理其余部分。

js.file:

function selectopic(topic_selector_name){        
 $('#topicidselected').val($(topic_selector_name).val());
 // alert ($('#topicidselected').val());
 $('#topicidselected').text($(topic_selector_name).val());
 $('#topicselected').text($(topic_selector_name).text());
}

$('.topicselect').click(function(){
selectopic($(this));
}); 

$('#newentryform').ajaxForm({
    target:  '#para1', 
    resetForm: true,     
    });     

问题是,我们假设有$_POST={"entry":"blahblahblah","topicid":"122","date":"12\/06\/12","privacy":"onlyme"}

但相反,它给了我Notice: Undefined index: topicid in D:\wamp\www\projectdiary\diary\php\_newentry.php on line 2

{"entry":"blahblahblah","topicid":null,"belongdate":"12\/06\/12","privacy":"onlyme"}

php.file:

$arr = array( 'entry' => $_POST['entry'], 'topicid' => $_POST['topicid'], 'date' => $_POST['date'], 'privacy' => $_POST['privacy']);
  echo "We have saved your entry, this is how it looks like: <br />";
      echo json_encode( $arr );

你可以在js.file中看到我使用alert来传入后检查值。这是一个正确的数字&#34; 122&#34;。

我是一个菜鸟,我需要你的帮助。 感谢。

3 个答案:

答案 0 :(得分:1)

检查是否定义了索引,如果不是NULL

$_POST['entry'] = isset($_POST['entry']) ? $_POST['entry'] : NULL;
$_POST['topicid'] = isset($_POST['topicid']) ? $_POST['topicid'] : NULL;
$_POST['privacy'] = isset($_POST['privacy']) ? $_POST['privacy'] : NULL;
$_POST['date'] = isset($_POST['date']) ? $_POST['date'] : NULL;

$arr = array( 'entry' => $_POST['entry'], 'topicid' => $_POST['topicid'], 'date' => $_POST['date'], 'privacy' => $_POST['privacy']);
  echo "We have saved your entry, this is how it looks like: <br />";
      echo json_encode( $arr );

或停用通知

error_reporting(E_ALL ^ E_NOTICE);

$arr = array( 'entry' => $_POST['entry'], 'topicid' => $_POST['topicid'], 'date' => $_POST['date'], 'privacy' => $_POST['privacy']);
  echo "We have saved your entry, this is how it looks like: <br />";
      echo json_encode( $arr );

答案 1 :(得分:1)

为什么要将值分配给topicselected并设置text属性(不正确使用,see the docs)?您是否点击a代码并获取val()个代码?请参阅那里的文档:http://api.jquery.com/val/ - 也无效。也许我误解了你?

我认为你比以往更努力,这可以在一行中完成:

jQuery('.topicselect').click(function(){$('#topicidselected').val(this.rel);}); 

jsFiddle:http://jsfiddle.net/KNERB/

答案 2 :(得分:1)

您的alert表示您已成功使用值填充#topicidselected,因此我的猜测是表单存在问题。检查:

  1. 您在input)上设置值的#topicidselected标记实际上是正在提交的表单的一部分 - 换句话说,它嵌套在{{{ 1}}标记其他表单元素所在的位置。

  2. <form>具有input属性nametopicid