最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

jquery - Send javascript array to server - Stack Overflow

programmeradmin1浏览0评论

I have an array who's content I would like to get on my server. I have been wading through internet pages trying to find how to do this without succeeding yet.

Let's imagine I have a server, and that I would like this array in my javascript to go into a file on my server, how would I do that?

I have been going through internet pages looking for how to do this and I have come up with the following code:

<html>
    <!-- installs jquery and ajax. -->
    <link href=".9/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/>
    <script src=".5/jquery.min.js"></script>
    <script src=".8/jquery-ui.min.js"></script>
    <script>
        var arr = ["one","two","three"];
        arr = JSON.stringify(arr);

        $.ajax({
            url: "",
            type: "POST",
            data: {
                myArray : arr
            }
        });

        alert('hello');
    </script>
</html>

I have an array who's content I would like to get on my server. I have been wading through internet pages trying to find how to do this without succeeding yet.

Let's imagine I have a server, and that I would like this array in my javascript to go into a file on my server, how would I do that?

I have been going through internet pages looking for how to do this and I have come up with the following code:

<html>
    <!-- installs jquery and ajax. -->
    <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.9/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
    <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>
    <script>
        var arr = ["one","two","three"];
        arr = JSON.stringify(arr);

        $.ajax({
            url: "http://url_name_here.com",
            type: "POST",
            data: {
                myArray : arr
            }
        });

        alert('hello');
    </script>
</html>
Share Improve this question edited Nov 5, 2012 at 16:24 Rory McCrossan 338k41 gold badges319 silver badges350 bronze badges asked Nov 5, 2012 at 16:22 john-jonesjohn-jones 7,78019 gold badges55 silver badges88 bronze badges 3
  • 1 What language is your server-side application written in? There are different ways that could work for each language. – Justin Niessner Commented Nov 5, 2012 at 16:24
  • There is no server-side application. Maybe that's the problem. How do I setup this server side thing? Can I not just throw that array straight to a file on the server? – john-jones Commented Nov 5, 2012 at 16:45
  • 1 No, you can't just throw an array to a file on the server by passing it through an AJAX call. You need some server-side code to receive the data, create a new file on the server, and write the data to the file. – Justin Niessner Commented Nov 5, 2012 at 16:50
Add a comment  | 

3 Answers 3

Reset to default 13

That's an array, there's no need to stringify it, jQuery will convert the data to a valid querystring for you

var arr=["one","two","three"];

$.ajax({
    url: "/urltoMyOwnSite.php",
    type: "POST",
    data: {myArray : arr}
});

PHP (if that's what you're using)

$array = $_POST['myArray'];

front end stuffs

<html>
    <!-- installs jquery and ajax. -->
    <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.9/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
    <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>
    <script>
    $(function(){
     var arr = ["one","two","three"];
        arr = JSON.stringify(arr);

        $.ajax({
            url: "http://url_name_here.com",
            type: "POST",
            data: {
                myArray : arr
            }
        }).done(function(data,text,jQxhr){
       alert("success");
    });
});
    </script>
</html>

back end server (java b/c it's what I have open in dev atm)

    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    import org.json.simple.JSONObject;
    import java.nio.ByteBuffer;
    import java.nio.channels.FileChannel;
    import java.io.FileOutputStream;

    public class MyServlet extends HttpServlet
    {
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException,
                IOException
        {
            JSONObject jsonObj = (JSONObject) org.json.simple.JSONValue.parse(request.getParameter("myArray"));
           // write out your file IO.
JSONObject jsonObj = (JSONObject) org.json.simple.JSONValue.parse(request.getParameter("myArray"));
        FileOutputStream file = new FileOutputStream(java.io.File.createTempFile("myArray-",Long.toString((new Date()).getTime())));
        FileChannel fc = file.getChannel();
        ByteBuffer sw = ByteBuffer.allocate(jsonObj.toJSONString().length());
        sw.clear();
        sw.put(jsonObj.toJSONString().getBytes());
        sw.flip();

        while(sw.hasRemaining()) {
            fc.write(sw);
        }
fc.close();
//because its much easier than a flat file, we can write it back in the server response.
        org.json.simple.JSONValue.writeJSONString(jsonObj, response.getWriter());
        }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException,
                IOException
        {
            doGet(request, response);
        }

    }

jQuery will stringify the array for you, so you are effectively encoding it twice in your example which is causing your problems. Try this:

var arr = ["one","two","three"];
$.ajax({
    url: "http://url_name_here.com",
    type: "POST",
    data: { myArray : arr }
});
发布评论

评论列表(0)

  1. 暂无评论