PHP如何防止覆盖get类型

时间:2016-11-06 21:09:43

标签: jquery ajax

问题的措辞有点奇怪,但那是因为我不太确定如何用文字表达。我的问题如下。我正在使用ajax通过JS向我的php文件发出.get请求。

我有两个方法负责获取意义,因此我说:

$.get("babynames.php",
    {
       type: "meaning",
       name: nested
    },
    function (data) {
        //alert("Data loaded " + data);
        $("#meaning").innerHTML = data;
    });

另一个负责排名(正在进行的工作),看起来像这样:

$.get("babynames.php",
        {
            type: "rank",
            name: name,
            gender: gender
        },
        function(data){
        //$("#grapharea").append(data);
            document.getElementById("graph").innerHTML = data;
    });

我的index.php中的预期输出看起来如此:

The name <name here> means: 
__________________________________________________

<name meaning> 

Popularity:

<Ranking goes here> 

但是,名称和排名都低于受欢迎程度,因为似乎稍后的类型设置为“排名”。我调用两个JS函数的方式如下:

document.getElementById("search").addEventListener("click", function(e){
    $("#resultsarea").show(); // un-hides the display area with all the info
    nested = document.getElementById("allnames");
    nested = nested.options[nested.selectedIndex].value;
    document.getElementById("nested").innerHTML = nested;
    e.preventDefault();
    meaning();
    rank();
});

我哪里出错了?

1 个答案:

答案 0 :(得分:1)

混合两种样式的脚本通常不能很好地结合在一起,正如Barmar所指出的那样。

<?php
  #babynames.php

  if(isset($_POST['name'])){
    // fetch meaning
    // fetch rank

        $response = [
            'rank' => $rank,
            'meaning' => $meaning
        ];

        echo json_encode($response);
  }

?>

对于客户:

$(function(){
  $("#search").click(function(e){
    e.preventDefault();
  });

  $("#allnames").change(function(e){
    alert($("#allnames option:selected").text()); // use the one that works
    alert($("#allnames option:selected").val()); // I dont have your html code.

    var name = $("#allnames option:selected").val();

    $.ajax({
      type: "POST",
      url: 'babynames.php'
      data: {name:name},
      success: function(json){
        alert("Look at our PHP response.. " + json);
        var o = jQuery.parseJSON(json);
        alert(o.rank);
        alert(o.meaning);
      }
    });
  });
});

说实话,我不知道这段代码是否包含语法错误,但无论如何都需要一些工作。

这个想法是对下拉列表中的每个更改使用1个请求。您有一个名称,将其提交给PHP,获取排名和含义,并在1个响应中返回。

查看并学习此代码,这就是您应该如何处理事件。