Javascript 如何模拟GET操作并在不重新加载的情况下将其传递到同一页面?
因此,我正在创建一个站点,它从服务器获取数据(名称,带有自动完成脚本),收集所有数据,然后在提交时将收集的数据发送到服务器,以获取JSON字符串,以便在页面上进一步使用 但是,所说的服务器没有最后一部分,我需要模拟它。但我不知道怎么做 使用HTML、JS、jQuery等 所以问题是,由于结构存在 我该怎么去Javascript 如何模拟GET操作并在不重新加载的情况下将其传递到同一页面?,javascript,jquery,html,Javascript,Jquery,Html,因此,我正在创建一个站点,它从服务器获取数据(名称,带有自动完成脚本),收集所有数据,然后在提交时将收集的数据发送到服务器,以获取JSON字符串,以便在页面上进一步使用 但是,所说的服务器没有最后一部分,我需要模拟它。但我不知道怎么做 使用HTML、JS、jQuery等 所以问题是,由于结构存在 我该怎么去 <form action="Search" method="get"> <input type="hidden" name="foo"/> <input typ
<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好的,我再次更新了显示真实数据和欺骗数据。但是,我谦虚地建议,它返回的格式确实会有所不同。如果你试图假装你是服务器,并且考虑到有很多服务器返回表单+新数据的不同方式,那么您应该定义它是什么,并准确地模拟它。