尝试通过AJAX

时间:2017-07-01 21:58:25

标签: javascript ajax

我是javascript的新手,过去三个小时我一直试图处理通过AJAX发送数据的问题。

我正在尝试使用函数将字符串发送到php文件。这个函数的作用是将一个GET请求发送到一个php文件,该文件有一个查询并输出一个HTML;该函数获取HTML并将其放入" html_user_club"。

    function userClubVotes(str_1,str_2,str_3) {
        if (str_1 == "") {
            document.getElementById("html_user_club").innerHTML = "";
            return;
        } else {
            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 (this.readyState == 4 && this.status == 200) {
                    document.getElementById("html_user_club").innerHTML = this.responseText;
                }
            };
            xmlhttp.open("GET",'ajax/ajax-user-club-votes.php?user_id='+str_1+'&user_to_visit='+str_2+'&following_votes='+str_3,true);
            xmlhttp.send();
        }
    }

它有效,但仅限于网址不长。有了这个网址,它不起作用:

AJAX / Ajax的用户俱乐部votes.php USER_ID = 13&安培; user_to_visit = 134&安培; following_votes = 1323.1323.134.23425.25245.42.24524.233.2344.232.1323.134.23425.25245.42.24524.233.2344.232.1323.134.23425.25245.42.24524.233 .2344.232.1323.134.23425.25245.42.24524.233.2344.232.1323.134.23425.25245.42.24524.233.2344.232.23425.25245.42.24524.233.2344.232.1323.134.23425.25245.42.24524.233.2344.232.1323.134.23425.25245.42.24524.233.2344.232.1323.134.23425.25245.42 .24524.233.2344.232。

那么,有没有办法通过AJAX发送长网址?

编辑:

好的,所以我必须通过POST而不是GET发送字符串。我试着改变这个:

xmlhttp.open("GET",'ajax/ajax-user-club-votes.php?user_id='+str_1+'&user_to_visit='+str_2+'&following_votes='+str_3,true);
xmlhttp.send();

为此:

var string = '?user_id='+str_1+'&user_to_visit='+str_2+'&following_votes='+str_3;
var body = "string=" + encodeURIComponent(string);
xmlhttp.open("POST", "ajax/ajax-user-club-votes.php", true);
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlhttp.setRequestHeader("Content-Length", body.length);
xmlhttp.setRequestHeader("Connection", "close");
xmlhttp.send(body);

但仍然没有结果。任何线索?

EDIT_2

另一个尝试,前两个变量通过GET,最后一个通过POST:

xmlhttp.open("GET",'ajax/ajax-user-club-votes.php?user_id='+str_1+'&user_to_visit='+str_2,true);
xmlhttp.send();
var body = "string=" + encodeURIComponent(str_3);
xhr.open("POST", "ajax/ajax-user-club-votes.php", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.setRequestHeader("Content-Length", body.length);
xhr.setRequestHeader("Connection", "close");
xhr.send(body);

不成功,但看起来很有希望。任何的想法? (我正在尝试做Sending a long string through ajax doesn't work

之类的事情

2 个答案:

答案 0 :(得分:0)

您可以改为发送POST请求。因此,您在请求正文中传递following_votes,并在.php文件中传递值为$_POST["following_votes"]

答案 1 :(得分:0)

对我来说,我总是用jquery做ajax请求... 所以在jquery中,你可以用以下方法解决你的问题:

function userClubVotes(str_1,str_2,str_3) {
    if (str_1 == "") {
        document.getElementById("html_user_club").innerHTML = "";
        return;
    } else {

       $.ajax({
          method:"POST",
          url:"ajax/ajax-user-club-votes.php",
          data:{
             user_id:str_1,
             user_to_visit: str_2,
             following_votes:str_3
          },
          success:function(response){
              //handle response from the server
          },
          error:function(){
             //handle error
          }
       })
    }
}

在PHP方面,你只需要使用:

<?php
var_dump($_POST["user_id"]);
var_dump($_POST["user_to_visit"]);
var_dump($_POST["following_votes"]);

要将数据发布到脚本,最好使用“POST”(适用于所有变量)。