我正在尝试在带有2个选项的select标签上使用ajax,但由于某种原因它没有获得$ _POST。它打印出“---”,但它不会打印$ _POST值,即1或2.我不确定我做错了什么。请看一下我的代码:
newtest.php
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script type = "text/javascript">
function ajax(url,type,theName,id) {
$.ajax({
type: "POST",
url: url,
data: { select: $(type+'[name='+theName+']').val()},
error: function(xhr,status,error){alert(error);},
success:function(data) {
document.getElementById( id ).innerHTML = data;
}
});
}
</script>
<?php
echo "<select name = 'name' onchange = 'ajax(\"newtestx.php\",\"input\",\"name\",\"output\")'>";
echo "<option value = '1'> 1 </option>";
echo "<option value = '2'> 2 </option>";
echo "</select>";
echo "<div id = 'output'></div>";
?>
newtestx.php
<?php
$name = $_POST['name'];
echo $name."---";
?>
答案 0 :(得分:1)
您正在发送帖子参数select
并尝试接收$_POST['name']
。
确保它们匹配...... name
或select
答案 1 :(得分:1)
您正在使用键&#34发送POST参数;选择&#34;到AJAX调用中的服务器:
data: { select: $(type+'[name='+theName+']').val()},
在newtestx.php中,您尝试使用键&#34; name&#34;从POST参数中检索值。 - 不存在:
$name = $_POST['name'];
您可以通过为参数键指定相同名称来轻松解决此问题。如果您要查找$ name = $_POST['select']
,则会找到该参数。
内联Javascript被认为是不好的做法,并且不需要回显HTML标记,这使得标记更难以使用。
<强> newtest.php 强>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="[link to your javascript file here]"></script>
<select name='numbers' class="postValueOnChange" data-id-to-update="output" data-post-url="newtestx.php">
<option value='1'>1</option>
<option value='2'>2</option>
</select>
<div id='output'></div>
Javascript文件
$(document).ready(function () {
$('.postValueOnChange').change(postSelectedValue);
function postSelectedValue(e) {
var $self = $(this);
var url = $self.data('post-url');
var $elementToUpdate = $('#' + $self.data('id-to-update'));
var jqxhr = $.ajax({
type: "POST",
url: url,
data: {
selected: $self.val()
}
});
jqxhr.done(function (data) {
$elementToUpdate.html(data);
});
jqxhr.fail(function (jqXHR, textStatus, errorThrown) {
alert(errorThrown);
});
}
});
<强> newtestx.php 强>
<?php
$name = $_POST['selected'];
echo $name."---";
?>
答案 2 :(得分:0)
首先,由于您使用的是jQuery,为什么还在使用内联javascript?
我建议您首先围绕jQuery $(document).ready(function() {
$('select').change(function(e) {
e.preventDefault();
var selected = $('.select option:selected').val();
var id, theName, url= ...// get it from the DOM
$.ajax({
type: "GET",
url: url,
data: { select: selected},
error: function(xhr,status,error){alert(error);},
success:function(data) {
$('#'+id).html(data);
}
});
});
});
事件重新构建代码:
<form action="">
<select name="name">
<option value="1">1</option>
<option value="1">1</option>
</select>
</form>
<div id="output"></div>
其次,为什么你用PHP编写HTML代码,你只是用引号和双引号以及不需要的空格来挣扎并浪费时间。
onclick