Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax不适用于select标记、PHP和Ajax_Php_Jquery_Ajax - Fatal编程技术网

Ajax不适用于select标记、PHP和Ajax

Ajax不适用于select标记、PHP和Ajax,php,jquery,ajax,Php,Jquery,Ajax,我试图在带有2个选项的select标签上使用ajax,但由于某种原因,它没有得到$u帖子。它打印出“--”,但不打印$u POST值,该值为1或2。我不确定我做错了什么。请看一下我的代码: newtest.php 函数ajax(url、类型、名称、id){ $.ajax({ 类型:“POST”, url:url, 数据:{select:$(type+'[name='+theName+']')。val(), 错误:函数(xhr,状态,错误){alert(error);}, 成功:功能(数据){

我试图在带有2个选项的select标签上使用ajax,但由于某种原因,它没有得到$u帖子。它打印出“--”,但不打印$u POST值,该值为1或2。我不确定我做错了什么。请看一下我的代码:

newtest.php


函数ajax(url、类型、名称、id){
$.ajax({
类型:“POST”,
url:url,
数据:{select:$(type+'[name='+theName+']')。val(),
错误:函数(xhr,状态,错误){alert(error);},
成功:功能(数据){
document.getElementById(id).innerHTML=数据;
}
});
}

您正在发送post参数
选择
并尝试以
$\u post['name']
的身份接收


请确保它们匹配…无论是作为
name
还是作为
select

首先,既然您使用的是jQuery,为什么您仍然使用内联javascript

我建议您首先围绕jQuery
change
事件重新构建代码:

$(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);
           }

      });


    }); 
}); 
第二,为什么要用PHP编写HTML,只使用引号和双引号,而不需要空格,这会让你陷入困境,浪费时间

    <form action="">  
        <select name="name">
        <option value="1">1</option>
        <option value="1">1</option>
        </select>


    </form>

<div id="output"></div>

1.
1.

在AJAX调用中,您正在向服务器发送带有键“select”的POST参数:

   data: { select: $(type+'[name='+theName+']').val()},
在newtestx.php中,您试图从键为“name”的POST参数中检索值,该键不存在:

$name = $_POST['name'];
您可以通过为参数键指定相同的名称来轻松解决此问题。如果要查找$
name=$\u 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>
<?php
$name = $_POST['selected'];
echo $name."---";
?>
newtestx.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>
<?php
$name = $_POST['selected'];
echo $name."---";
?>


对于
来说,
类型是
输入也没有意义。如下文所述,最好是去掉内联onchange代码
没有做任何事情
不是对网络中实际请求的正确检查tab@frosty... 假设您了解数据对象是什么以及服务器上的post键是什么……否则您可能需要学习php手册和jQueryAjax文档中的更多基础知识。我们有很多教程来学习如何在浏览器开发工具中检查请求…我们不能这样做,因为您是否了解charlie关于类型
…的第三条注释…是输入的…
,我想您不了解您的功能在做什么您能告诉我是哪部分代码导致了故障,如何修复它?我正在尝试,但您从一开始就采用的编码方式并不尊重最佳实践。更好地解决这两个问题。我仍在努力想清楚,当你有很多不匹配的地方时,你需要使用浏览器调试工具来开始评估什么是什么,看看变量是否如预期的那样,以及实际与服务器通信的内容我完全同意你的看法,
console.log
client-side+
var\u dump
server-side运行良好,网络选项卡跟随HTTP通信。@whitelets空白纸请帮助我找出我做错了代码的哪一部分。我这样问是因为我不知道我做错了什么,我试图得到专业的帮助。你为ajax编写了一个全新的代码。你能告诉我代码的哪一部分是错误的,并帮我修复那一部分吗?除非整个事情都错了。非常感谢。
<?php
$name = $_POST['selected'];
echo $name."---";
?>