这是一个在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;。
我是一个菜鸟,我需要你的帮助。 感谢。
答案 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
,因此我的猜测是表单存在问题。检查:
您在input
)上设置值的#topicidselected
标记实际上是正在提交的表单的一部分 - 换句话说,它嵌套在{{{ 1}}标记其他表单元素所在的位置。
<form>
具有input
属性name
:topicid