0

我正在尝试使用 AJAX 发送和接收参数而没有任何成功

首先,我选择 AREA 而不是该地区的 CITIES。

你能告诉我我做错了什么吗?

客户端:

<script>
$(document).ready(function(){

  $("#first").click( 

    function(){

        var area_id=$("#area_id").val();

        $.ajax({
        type: "POST",
        url: "recs.php",
        data: "area_id="+area_id,
        cache:false,
        success: 
          function(data){
            $("#second").html(data.message); 
          }

        });

      return false;

    });


});


</script>


<form method="post" action="tosomewhere.php">

    <select id="first" name="area_id">
      <option value="1">1</option>
      <option value="2">2</option>
    </select>

    <select id="second" name="section">  </select>

</form>

服务器端:

$areaID = $_POST['area_id'];
$second_option = "";

$query2 = mysql_query("SELECT * FROM `cities` WHERE area_id = $areaID ORDER BY id ASC");
while($index = mysql_fetch_array($query2)) 
{
    $id = $index['id'];
    $name  = $index['name'];

    $second_option .= "<option value='$id'>$name</option>";
}

echo $second_option;
exit;

谢谢先进

编辑后:

我将代码更改为更简单的代码:

客户端:

<script>
$(document).ready(function(){
  $("#first").click( 
    function(){
        var area_id=$("#area_id").val();

        $.ajax({
        type: "GET",
        url: "recs.php",
        data: "area_id="+area_id,
        cache:false,
        success: 
          function(data){
            $("#second").html(data); 

          }

        });

      return false;

    });


});


</script>

<form method="post" action="tosomewhere.php">

    <select id="first" name="area_id">
      <option value="1">1</option>
      <option value="2">2</option>
    </select>

    <div id="second"></div>

</form>

服务器端:

some text

我仍然没有将字符串放入

4

4 回答 4

3

改变

$("#second").html(data.message); 

$("#second").html(data); 
于 2013-08-22T08:44:32.737 回答
0

无论您的 ajax 调用是否实际初始化,您都需要调试代码实际出错的地方。

i:检查“area_id”js变量中的值是否正确获取

alert(area_id);

ii:如果可以,请检查服务器脚本返回的数据是否正确

alert(data); or alert(data.message);

iii:为了测试是否正确接收数据,只需发送测试脚本即可。

echo "sample text";
exit;

或者尝试以json格式发送数据

die('{"message" : "sample text"}');

如果所有三个步骤都工作,那么数据访问脚本应该有错误。

如果您没有在 ajax 中获得输出,请尝试使用firebug检查发送请求和获取响应时实际发生的情况。

于 2013-08-22T08:49:14.047 回答
0
<script>
$(document).ready(function(){
  $("#first").click(function(){
        var area_id=$("#area_id").val();
        $("#second").load('tosomewhere.php?area_id=' + area_id);
      return false;
    });
});
</script>

稍微改变了jquery。使用 GET。

脚本也发生了变化:

$areaID = (int) $_GET['area_id'];
$second_option = "";

$query2 = mysql_query("SELECT * FROM `cities` WHERE area_id = '$areaID' ORDER BY id ASC");
if (mysql_num_rows($query2) > 0){    
    while($index = mysql_fetch_array($query2)){
        $second_option .= '<option value="'.$index['id'].'">'.$index['name'].'</option>';
    }
    echo $second_option;
} else {
    echo 'No result!';
}

die();

在 $_GET 之前添加 (int) 作为安全前测量。

于 2013-08-22T08:50:02.940 回答
0

将这个参数添加到ajax函数中

dataType:'text'
于 2013-08-22T09:13:04.307 回答