尝试使用XMLHttpRequest()

时间:2016-03-14 14:45:36

标签: javascript php jquery ajax

我正在尝试使用jQuery将HTML textarea中的值传递给PHP文件。这就是我到目前为止所做的:

JQuery的

var jq = $.noConflict();
jq("#addUsers").click(function () {
    jq("#addModal").modal("show");
});

jq("#addUser").click(function () {
    var text = jq("textarea#emails").val();
    if (text.length == 0)
    {
        alert("Please enter new user e-mails line by line.");
    }
    else
    {
        var xmlhttp = new XMLHttpRequest();
        xmlhttp.onreadystatechange = function() {
            if (this.readyState == 4 && this.status == 200)
            {
                jq("textarea#emails").innerHTML = xmlhttp.responseText;
            }
        };
        xmlhttp.open("GET", "add_users.php?emails=" + text + "&list=1", true);
        xmlhttp.send(null);
    }
});

add_users.php

<?php
//error_reporting(E_ALL);
ini_set('display_errors', '1');

$list = $_REQUEST["list"];
$emails = trim($_REQUEST["emails"]);

// This is where I will parse out the text line-by-line
// .....
?>

所以,这一切都是由第6行的点击功能激活的。但是当我这样做时,没有任何反应。我尝试在函数内部的任何地方放置一个echo语句,它回应很好。此外:

  • php文件与我正在使用的文件位于同一目录中。
  • 我试过在php文件中回声;永远不会访问php文件。
  • 我尝试使用alert()回显响应文本;没有任何反应。

不确定我做错了什么。请帮助!!

1 个答案:

答案 0 :(得分:0)

首先,jq("textarea#emails").innerHTML无法正常工作,因为您现在正在处理jQuery包装元素,而不是原始HTML元素。如果您使用jQuery,则需要使用val()html()设置内容(取决于元素)。

因此, 成功调用您的脚本,而不是在您的页面上输出结果。

您可以使用jQuery极大地简化您的ajax。我特意使用load(),因为您的意图是将结果粘贴到元素中。

我会从这开始:

jq("#addUser").click(function () {
    var text = jq("textarea#emails").val();
    if (text.length == 0)
    {
        alert("Please enter new user e-mails line by line.");
    }
    else
    {
        jq("textarea#emails").load("add_users.php?emails=" + text + "&list=1");
    }
});

参考:http://api.jquery.com/load/

成功完成ajax查询后,请检查您的开发工具网络标签(假设此处为Chrome),以观看ajax调用并查看服务器的响应方式。