Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何模拟GET操作并在不重新加载的情况下将其传递到同一页面?_Javascript_Jquery_Html - Fatal编程技术网

Javascript 如何模拟GET操作并在不重新加载的情况下将其传递到同一页面?

Javascript 如何模拟GET操作并在不重新加载的情况下将其传递到同一页面?,javascript,jquery,html,Javascript,Jquery,Html,因此,我正在创建一个站点,它从服务器获取数据(名称,带有自动完成脚本),收集所有数据,然后在提交时将收集的数据发送到服务器,以获取JSON字符串,以便在页面上进一步使用 但是,所说的服务器没有最后一部分,我需要模拟它。但我不知道怎么做 使用HTML、JS、jQuery等 所以问题是,由于结构存在 我该怎么去 <form action="Search" method="get"> <input type="hidden" name="foo"/> <input typ

因此,我正在创建一个站点,它从服务器获取数据(名称,带有自动完成脚本),收集所有数据,然后在提交时将收集的数据发送到服务器,以获取JSON字符串,以便在页面上进一步使用

但是,所说的服务器没有最后一部分,我需要模拟它。但我不知道怎么做

使用HTML、JS、jQuery等

所以问题是,由于结构存在

我该怎么去

<form action="Search" method="get">
<input type="hidden" name="foo"/>
<input type="hidden" name="bar"/>
<input id="submitButton" type="submit" value="Search"/>
</form>

其中foo和bar在提交时具有值

最终成为一个JSON对象,包含foo、bar和一些我刚刚编写的随机数据

在.js中,按submit时,不重新加载页面。(也就是说,按submit键只会启动脚本并将表单数据提供给它,而不会提供其他内容)

编辑:抱歉,已更改帖子以获取。服务器将在工作时使用JSON响应GET。

试试这个

$("form").submit(function(event){
event.preventDefault();
$.post("http://whatever.com/post.php",$(this).serialize(), function(data){
alert(data);
});
});
试试这个:

$("form").submit(function (event) {
  event.preventDefault();

  // NOTE: the following would work when the server is ready
  //$.getJSON("http://whatever.com/endpoint.php", $(this).serialize(), function(data) {
  //  console.log(data);
  //});

  var fakeData = {
    whatever: "data",
    you: "need",
    foo: "value",
    bar: "value"
  };
  console.log(fakeData);

});

确保打开firebug以查看console.log()。

将希望从服务器返回的JS数组/对象放入
返回数据中:

$(function(){
    var handleNewData = function(data){
        alert('I got:\nfoo:'+data.foo+'\nbar:'+data.bar+'\nresults:'+data.results);
    };
    var reallySubmit = false;
    $('form').submit(function(evt){
        if (reallySubmit){
          $.get(this.action,$(this).serialize(),handleNewData,'json');
        }else{
            // Put whatever spoof data you want here.
            var returnedData = {
                foo:this.elements.foo.value,
                bar:this.elements.bar.value,
                results:["jim", "jam", "jamboree"]
            };
            handleNewData( returnedData );
            return evt.preventDefault();
        }
    }); 
});
请参见此处的工作示例:

编辑:抱歉,我忘记了如果您传递参数,jQuery将为您正确解析JSON字符串。更新了答案以显示这一点;无需将欺骗值字符串化


编辑2:好的,再更新一次,向您展示如何包括表单值和欺骗数据。

您所说的“所述服务器没有最后一部分”是什么意思?服务器是否接受POST请求并使用JSON响应?如果没有,它的响应格式是什么?如果我正确理解了这个问题,关键是应用程序只是部分完成了——OP正在编写客户端部分,而服务器端部分还没有到位。这应该会创建querystring格式的数据(“foo=blah&bar=blahblah”)而不是json格式的数据(“foo=blah&bar=blahblah”){foo:blah,bar:blahblah}”)。如何将foo和bar放入var?这只是将foo和bar设置为“value”,而不是将其实际值从带有$(This.find(“input[name='foo']).val()的input替换为“value”。val()令人满意,是的,但我确实需要添加假数据,而不仅仅是传递jsonWell,现在它只显示“foo”、“bar”、“jim”"相反,这是我的观点,我需要输入的数据和一个伪造的数据object@Meke您最好准确地显示您希望从服务器返回的JSON数据的格式。它看起来有点不相关,因为我需要做的只是伪造它。输入字段将有值,这就是我所拥有的,我需要模拟它被发送json响应应该包含输入字段的值,并添加一些我自己的伪变量。@Meke好的,我再次更新了显示真实数据和欺骗数据。但是,我谦虚地建议,它返回的格式确实会有所不同。如果你试图假装你是服务器,并且考虑到有很多服务器返回表单+新数据的不同方式,那么您应该定义它是什么,并准确地模拟它。