【问题标题】:How To Get The Value of an input field using AJAX and Pass it To A PHP String?如何使用 AJAX 获取输入字段的值并将其传递给 PHP 字符串?
【发布时间】:2013-01-07 12:34:50
【问题描述】:

我是 JavaScript 新手,所以请原谅我缺乏知识。

我正在尝试编写一个联系表单,并希望在访问者使用 AJAX 输入值后立即获取在特定输入文本字段中输入的值,并将其传递给 PHP 字符串,以便我可以显示基于相关的信息在点击提交按钮之前输入的值。

我怎样才能做到这一点使用 jQuery

这是我用于表单的代码:

<form method="post" action="">
<input type="text" id="name" name="name" />
<input type="text" id="email" name="email" />
<input type="text" id="subject" name="subject" />
<input type="text" id="url" name="url" />
<input type="checkbox" id="showdetails" name="showdetails" /> Show URL Details
<input type="submit" value="Submit" />
</form>`

我需要将 URL 输入字段的值传递给 php 字符串(只要用户检查了 showdetails 复选框),以便我可以在后台处理它以显示基于 url 的信息。

【问题讨论】:

  • 用什么? jQuery?工具?原生JS?你有没有尝试过?
  • 是的,jQuery。对不起,我没有提到这一点。编辑我的问题并添加。
  • 您想要访问者输入值时还是(用户检查showdetails checkbok时)? ?用户体验存在巨大差异。
  • @mpungjan,只要用户选中复选框。然后它应该检查是否在该字段中输入了任何值并将其传递给我可以在我的函数中使用的 php 字符串。如果未输入任何值但选中该框,则会弹出一条错误消息。抱歉,我完全是 JavaScript 新手,所以请帮忙。

标签: javascript html ajax


【解决方案1】:

鉴于此 html:

<form method="post" action="">
<input type="text" id="name" name="name" />
<input type="text" id="email" name="email" />
<input type="text" id="subject" name="subject" />
<input type="text" id="url" name="url" />
<input type="checkbox" id="showdetails" name="showdetails" /> Show URL Details
<input type="submit" value="Submit" />
</form>

jQuery(复选框)

$(function() {
  $("showdetails").on("click",function() {
    var url = $("#url").val();
    if (url && $(this).is(":checked")) {
      $.get("relevantinfo.php",
        { "url": url },
        function(data){
          // do something with data returned
        }
      );
    }
    else {
      // clear relevant info here
    }
  });
});

接收端:Retrieving POST Data from AJAX Call to PHP

【讨论】:

  • 考虑使用$.get()data 参数,而不是手动构建查询字符串。
  • 是的,但没有编码。 jQuery 会为您做到这一点 - 这就是我建议它的原因。
【解决方案2】:

在文本字段中使用 onchange 事件获取输入字符串。

参考:https://developer.mozilla.org/en-US/docs/DOM/element.onchange

然后使用该字符串内容,调用 AJAX 函数。

function load(string) {
    var xmlhttp;
    if(window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
    } else { // code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange = function() {
        if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            document.getElementById("myDiv").innerHTML = xmlhttp.responseText;
        }
    }
    xmlhttp.open("GET", "YOUR_URL", true);
    xmlhttp.send();
}

按照 cmets 中的建议,使用 jquery + AJAX。 对于 jquery,

$.ajax({
    url: 'ajax/test.html',
    success: function(data) {
        $('.divClass').html(data);
        alert('Load was performed.');
    }
});

【讨论】:

  • 代替XMLHttpRequest,使用jquery + Ajax来简化
  • @LearneR jQuery 如果你只用于 AJAX 处理,它就有点大了。
  • 我建议 onclick 复选框而不是 onchange 因为 onchange 在某些浏览器中需要模糊
  • 如果 jQuery 还没有被使用,包括整个库来执行 XHR 函数,那就过分了。特别是如果过时的浏览器支持不重要(alternatives)。我意识到 OP 要求它,请考虑这是一个侧面评论。
猜你喜欢
  • 1970-01-01
  • 2014-01-03
  • 1970-01-01
  • 2013-06-29
  • 2023-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多