我在JavaScript中构建了一个对象数组,并希望通过Ajax将它们发布回服务器(我使用jQuery)
JavaScript对象数组如下所示:
var columns = [
{ name: 'col 1', source: 'whatever', hidden: false, width: 50 },
...
];
Run Code Online (Sandbox Code Playgroud)
我发布回来像这样:
$.post('/MyController/MyAction', { 'columns': columns });
Run Code Online (Sandbox Code Playgroud)
在控制器操作我目前得到这个:
我有一个ac#object叫JqColumn
我想绑定帖子,它看起来像这样:
public class JqGridColumn
{
public string name;
public string source;
public int width;
public bool hidden;
}
Run Code Online (Sandbox Code Playgroud)
所以我认为在类型的控制器动作中添加一个参数JqGridColumn[] columns
会自动绑定发布的数据,但它不会(它生成一个数组,具有正确的元素数,但数组中的每个项都有空值)
谁能告诉我我做错了什么?谢谢!
UPDATE
目前,我手动绑定控制器操作中的项目如下:
public void ColumnChooser(JqGridColumn[] columns)
{
for (int i = 0; i < columns.Length; i++)
{
columns[i].hidden = bool.Parse(Request.Form["columns[" + i + "][hidden]"]);
columns[i].width = int.Parse(Request.Form["columns[" + i …
Run Code Online (Sandbox Code Playgroud) 我正在开发一个ASP.Net Core 2.0应用程序并在Linux/Nginx/Kestrel上运行它.
在开发环境(Windows 10)上,一切运行顺利.此外,在项目目录中使用"dotnet run"运行应用程序时.
在生产环境(Debian 8/Kestrel)上,所有表单POST都失败并显示HTTP状态码400(错误请求),而不会在控制台中提示任何错误,而表单GET请求运行正常.控制台中会提示所有其他消息(警告,错误).我正在使用"dotnet .dll"运行应用程序.
有人能指出我解决问题的方向吗?
我不太确定这属于这里,所以不要投反对票,只是让我知道是否是这样,我会很快继续前进。
无论如何,有一个网站有一个搜索页面,当点击搜索按钮时,它不会在 URL 中包含搜索查询。
搜索某些内容后,页面将重定向到ssearch.asp
,但如上所述,查询不存在。
我的问题是是否有一种方法可以仅通过 URL 提交搜索值。
我想知道是否有办法伪造搜索提交按钮并根据表单字段名称通过 URL 发布搜索词。
输入框的名称是search
,所以我尝试了这个网址:http://www.torec.net/ssearch.asp?search=query,但是不起作用,服务器返回:
服务器错误。
需要明确的是,我不是在寻找服务器端解决方案,实际上也不是在寻找 HTML 解决方案,我只是希望能够将普通的旧 URL 粘贴到浏览器地址栏中并在那里。
这可能吗?
更新
此链接无效:
http://www.torec.net/ssearch.asp? search=dark&page=1
虽然这个是这样的:
http ://www.torec.net/ssearch.asp?search=dark&page=2
有办法绕过这个吗?
我正在尝试将表单 POST 数据发送到下一页,但出现错误
您通过 POST 调用了此 URL,但该 URL 不以斜杠结尾,并且您设置了 APPEND_SLASH。Django 在维护 POST 数据时无法重定向到斜杠 URL。将表单更改为指向 127.0.0.1:8000/robustSearch/(注意结尾的斜杠),或在 Django 设置中设置 APPEND_SLASH=False。
我的 urls.py 文件
from django.urls import path
from . import views
urlpatterns = [
path('', views.home, name='home'),
path('search_titles', views.searchTitles, name='search_titles'),
path('stats/', views.dataStats, name='stats'),
path('robustSearch/', views.robustSearch, name='robustSearch'),
]
Run Code Online (Sandbox Code Playgroud)
和我的views.py 文件
def robustSearch(request):
if request.method == 'POST':
file = request.FILES['titles_file']
df = pd.read_csv(file)
df.dropna(inplace=True)
counting = df.counts()
context={
'counting': counting,
}
return render(request, 'result_titles.html', context)
Run Code Online (Sandbox Code Playgroud)
我的 POST 表单文件是
<form action="robustSearch" method="POST" enctype="multipart/form-data">
{% csrf_token …
Run Code Online (Sandbox Code Playgroud) (这是一个签名的小程序,我决定不使用 HTTPClient 以保持我的 jar 非常小)
我正在使用 HttpURLConnection 使用多部分表单发布成功将文件从用户上传到服务器。
问题在于 HttpURLConnection 在发送数据之前会缓存数据。因此,当我从文件中读取数据并写入 Outputstream 时,它只是缓冲数据 - 因此显示上传状态的进度条是完全错误的。但请注意,表单邮政代码有效,并且文件确实已正确上传,返回代码为 200。
那么如何确保 HttpURLConnection 不会缓存我发送到服务器的数据?
这是我的来源:
public UploadResponse send(String formPostUrlStr,String fileFieldName,File targetFile, Map<String, String> valuesMap, UploadStatusListener uploadStatusListener) throws Exception{
String sendStr=getBoundaryMessage(Boundary, valuesMap, fileFieldName, targetFile.getName(), valuesMap.get("content-type") );//"image/png") ;
System.out.println(" multi-part start \n "+ sendStr+ " multi-part end \n");
String lenstr=Long.toString((long)(sendStr.length()*2)+ targetFile.length());
System.out.println("Content-Length"+ lenstr);
//Content-Length
URL url= new URL(formPostUrlStr);
long startTime= System.currentTimeMillis();
HttpURLConnection s3Connection = (HttpURLConnection) url.openConnection();
System.out.println("opened url to "+ formPostUrlStr +", connection ok ..");
s3Connection.setRequestProperty("Content-Type", "multipart/form-data; …
Run Code Online (Sandbox Code Playgroud) 我的视图中有一个i-Frame链接到外部网站.此站点接受一些值和一些配置设置.这些配置设置的一部分是"CallBackURL".此外部网站发布到此CallBackUrl.
我将CallBackURL指定为对我的控件的操作.
查看代码
<form id="testForm" method="post" target="testFrame">
<input type="hidden" name="RequestXML" ID="RequestXML" value="<Request><RedirectURL>Account/TokenRequest</RedirectURL></Request>"
</form>
<iframe id="testFrame" name="testFrame" frameborder="0" style="width:1000px;height:500px"></iframe>
Run Code Online (Sandbox Code Playgroud)
控制器代码
[HttpPost]
[ValidateInput(false)]
public ActionResult TokenRequest()
{
if (Request.Form["ResponseXML"] != null)
ViewBag.ResponseXML = Request.Form["ResponseXML"];
return PartialView();
}
Run Code Online (Sandbox Code Playgroud)
在我的控制器操作中,我收到以下错误:"从客户端检测到一个潜在危险的request.form值"
我也在webconfig中设置了它
<httpRuntime requestValidationMode="2.0" />
<pages validateRequest="false"...
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
编辑 我正在编辑错误的web.config文件.我将它添加到views文件夹中的web.config.一旦我把它改成了正确的地方,它就开始工作了.
我需要从数据库构建一个动态表单.我有跟随实体来动态定义表单字段:
public class FormField {
public int ID { get; set; }
public string Name { get; set; }
public string Type { get; set; } // Possible values are: 'Radio','Combo','Text'. A dropdown will be created for a Combo type of element, a radio set for Radio type of element and a text input for Text type of element.
public string Options { get; set; } // Only relevant in case of Radio/Combo type
public string Default { get; set; …
Run Code Online (Sandbox Code Playgroud) 在ASP.NET webforms和ASP 3(经典ASP)中,我遇到了一个问题,即命名表单提交按钮"提交"将"破坏".下面是呈现的HTML:
<input type="submit" name="Submit" value="Submit" id="Submit" />
Run Code Online (Sandbox Code Playgroud)
我说"破坏事物"因为我不确定为什么或发生了什么.但症状通常是按下提交按钮有时什么也没做,即它只是没有用.但有时它确实有效.
事实上,我刚刚使用下面的代码构建了一个快速的单页测试,并提交工作正常:
<form id="form1" runat="server">
<div>
<asp:TextBox ID="txtTest" runat="server" />
<asp:Button ID="Submit" runat="server" Text="Submit" />
</div>
</form>
Run Code Online (Sandbox Code Playgroud)
但是,在过去,这个问题已经出现,重命名按钮总是使症状消失.
那么,是否有任何HTML/HTTP /浏览器专家知道为什么在提交按钮上设置id ="submit"会导致任何问题?
编辑
这个SO评论似乎暗示"提交"是一个保留的关键字.但为什么"id"或"name"属性会与此相关?这个"保留"关键字如何以导致冲突的方式实现?
再次感谢
我有以下 HTML 代码
<%@ Page Language="C#" %>
<html>
<head>
<title></title>
</head>
<body>
<form id="frmSystem" method="post" action="target.aspx">
<input id="txtTextField" type="text" />
<input id="btnPost" value="Submit" onclick="javascript:frmSystem.submit();" type="button" />
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
目标页面即将出现,但它正在接收的表单是空的。我的 target.aspx 页面上有一个断点,虽然我可以看到一个表单,但它的键是空的,Request["txtTextField"] 什么也没给我。
任何线索为什么?
基本
大家好,我已经看到tableToGrid方法(由Peter Romianowski)定义为tableToGrid(selector, options)
jqGrid wiki,但无法找到任何有文档的options
有谁知道这些或在哪里找到它们?编辑:谢谢奥列格,解决了!
更多
我实际上要做的是将生成的jqGrid包含在a中form
,这将提交checkbox
表的列中的值.我的问题是该tableToGrid
方法似乎是name
从checkbox
元素中删除属性,因此它们没有与表单发布一起提交.
我有一个表格接受Asp.net中的json帖子,我需要从Flash As3调用...
我正在使用下面的代码来做到这一点.我看过一些他们说工作正常的帖子.但我遇到下面的错误
Error: Error #2101: The String passed to URLVariables.decode() must be a URL-encoded query string containing name/value pairs.
这是我的代码.
var messages:Array = new Array ();
messages.push({"From":fromemailTxt.text,"To": ToemailTxt.text,"Body": BodyText.text,"Subject":SubjectText.text});
var JsonObj:String = JSON.encode(messages);
trace(JsonObj);
var variables:URLVariables=new URLVariables(JsonObj);
RequestURL= srvStringURL;
var JSONLoader:URLLoader = new URLLoader();
JSONLoader.dataFormat=URLLoaderDataFormat.TEXT;
JSONLoader.addEventListener(IOErrorEvent.IO_ERROR, GetBookmarkURLError, false, 0, true);
JSONLoader.addEventListener(Event.COMPLETE, parseBookmarkURLResult, false, 0, true);
var hdr:URLRequestHeader = new URLRequestHeader("Content-type", "application/json");
var request:URLRequest = new URLRequest(RequestURL);
request.requestHeaders.push(hdr);
request.data=variables;
request.method = URLRequestMethod.POST;
try
{
JSONLoader.load(request);
}
catch (error:ArgumentError)
{
trace("An …
Run Code Online (Sandbox Code Playgroud) 我已经对表单值的操作执行了HTTP POST:
名称= 123 + 456
但在我的行动中,它通过以下方式实现:
123 456
因此模型绑定器用空格替换"+".
[HttpPost]
public JsonResult MyAction(string name)
{
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?我是否必须创建自定义模型绑定器?
编辑:
这是在jquery中发布如下:
$.ajax({
...
data: "name=" + $('#signin-username').val()
...
});
Run Code Online (Sandbox Code Playgroud)
我应该使用JSON.stringify或类似的东西吗?或者我必须手动编码?
我有一个网站,我想实现搜索功能.所以我添加了下面的代码,在我的HTML页面中有一个搜索框
<form id="search" method="post" action="Results.aspx">
<input id="txtSearchKey" type="text" name="txtSearchKey" />
<input id="Submit1" type="submit" value="submit" /><br />
<br />
</form>
Run Code Online (Sandbox Code Playgroud)
在Results.aspx中,我想读取用户在txtSearchKey文本框中输入的值.这样做的理想方法是什么?我用了
string strKey = Request.Form["txtSearchKey"].ToString();
Run Code Online (Sandbox Code Playgroud)
但它抛出一个空引用异常.请指教
我不希望在ASP.NET中拥有所有页面.我希望只有结果页面作为ASP.NET
提前致谢
form-post ×13
http-post ×3
asp.net-mvc ×2
c# ×2
forms ×2
html ×2
.net ×1
ajax ×1
arrays ×1
asp.net ×1
asp.net-core ×1
checkbox ×1
django ×1
flash ×1
form-submit ×1
iframe ×1
java ×1
javascript ×1
jqgrid ×1
jquery ×1
json ×1
json.net ×1
knockout.js ×1
python ×1
razor ×1
search ×1
url ×1
url-pattern ×1