我正在使用小型mce。我想从小型mce的textarea中获取html元素。我尝试用ajax调用来做。我有一个pdf按钮,将从HTML生成PDF。我有这个:
public ActionResult GeneratePDFFOrProductHandler(EditProductModel model, string data)
{
SubmittedForm sf = new SubmittedForm();
string schema = requestSchema;
customer_DbConnection db = new customer_DbConnection();
RenderFormController renderController = new RenderFormController();
renderController.GeneratePdf(data, db, sf);
return RedirectToAction(model.DesignId, "Prdocut/Edit");
//return View(model);
}
和ajax电话:
function GenerateHTMLTOPDF() {
$.ajax({
type: "POST",
url: '@Url.Action("GeneratePDFFOrProductHandler", "Product")',
data: {},
success: function (data) {
alert(tinyMCE.get('tinymce').getContent());
alert("data from ajax = " + data.toString()); // data is html
$("#tinymce").html(data); // does not set anything
},
error: function (request, status, error) {
alert(tinyMCE.activeEditor.getContent());
alert(request.responseText);
}
});
}
调用控制器中的方法。但是数据每次都是空的。
谢谢
对于生成PDF的按钮是这样的:
<button type="submit" value="GeneratePDFFOrProductHandler" id="btnGeneratePDF" onclick="GenerateHTMLTOPDF()" class="btn btn-success"><i class="fa fa-fw fa-check"></i> @Resources.Action.Navigation.GeneratePDF</button>
但是如何在浏览器的新标签中生成pdf?
谢谢
但如果我试试这个:
function GenerateHTMLTOPDF() {
var data = tinyMCE.get('tinymce').getContent();
$.ajax({
type: "POST",
url: '@Url.Action("GeneratePDFFOrProductHandler", "Product")',
data: {data:data},
success: function (data) {
alert('success');
alert("data from ajax = " + data.toString()); // data is html
},
error: function (request, status, error) {
alert(tinyMCE.activeEditor.getContent());
alert(request.responseText);
}
});
}
甚至没有调用控制器方法
答案 0 :(得分:1)
发送到控制器的数据为空,因为您的AJAX调用中没有发送任何数据。
这一行:
data: {},
应包含您要返回的数据。
在您的情况下,您可以按如下方式重组您的电话:
function GenerateHTMLTOPDF() {
$.ajax({
var d = $('#tinymce').html( tinymce.get('tinymce').getContent() );
dataType: 'json',
type: "POST",
url: '@Url.Action("GeneratePDFFOrProductHandler", "Product")',
data: {d},
success: function (data) {
window.location.href = data;
},
error: function (request, status, error) {
//Error handling
}
});
}
此外,你不能通过AJAX帖子重定向,这一行:
return RedirectToAction(model.DesignId, "Prdocut/Edit");
无法正常运作。
return Json(Url.Action("Prdocut", "Edit"));
以上将返回JSON数据,其中包含您可以使用javascript导航到的窗口位置。这将不传递在GeneratePDF中创建的pdf模型。您必须重新构建代码才能执行此操作,因为当前结构使您难以实现所需的功能。
AJAX并不意味着来回传递复杂的对象,类似于控制器的方式,它以数据类型(如JSON / HTML / XML)的形式传递数据,可以找到完整的文档here(导航到数据类型) )。如有必要,您可以序列化对象,发送它,在后端更改它,将其作为复杂对象的JSON结构检索并重新组合对象,但是更简单和更好的做法是重新评估您要执行的操作并创建正确的对象MVC架构。
答案 1 :(得分:0)
下面
data: {},
你应该拥有你打算通过的数据。
而不是
return RedirectToAction(model.DesignId, "Prdocut/Edit");
在服务器端,您需要通过更改success
的值来重定向window.location.href
功能。