Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.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
Ajax 需要结合2个jQuery脚本和行为的帮助吗_Ajax_Jquery_Post_Character Encoding - Fatal编程技术网

Ajax 需要结合2个jQuery脚本和行为的帮助吗

Ajax 需要结合2个jQuery脚本和行为的帮助吗,ajax,jquery,post,character-encoding,Ajax,Jquery,Post,Character Encoding,我需要使用以下两种脚本的组合,但尽管我已经完成了所有的组合,我还是无法让它100%工作 我使用一个颜色框来显示产品详细信息页面,其中有一个带有各种字段的表单,用于将项目添加到购物车中。提交表单后,我希望显示一个警报,然后关闭colorbox,以便基础页面(在forst位置打开colorbox)保持原样 用这个脚本 $("#productadd").submit(function(){ // WORKS FINE EXCEPT THE ENCODING $.post( $(this).

我需要使用以下两种脚本的组合,但尽管我已经完成了所有的组合,我还是无法让它100%工作

我使用一个颜色框来显示产品详细信息页面,其中有一个带有各种字段的表单,用于将项目添加到购物车中。提交表单后,我希望显示一个警报,然后关闭colorbox,以便基础页面(在forst位置打开colorbox)保持原样

用这个脚本

$("#productadd").submit(function(){ // WORKS FINE EXCEPT THE ENCODING
  $.post(
    $(this).attr('action'),
    $(this).serialize(),
    function(data){
      alert('Product was added to your order');  
    $().colorbox.close();
});
除了编码(在我的例子中是iso-8859-7(希腊语)外,其他一切都很好。 如果我使用这个脚本,那么编码是可以的,但是帖子是使用默认行为进行的,即重定向到表单操作中定义的url

      $("#productadd").submit(function(){ //ENCODING OK, COLORBOX.CLOSE() AND ALERT FAIL
         $.ajax({
            data: data,
            type: "POST",
            url: $(this).attr('action'),
            dataType: 'json',
            beforeSend : function(xhr) {
                xhr.setRequestHeader('Accept', "text/html; charset=iso-8859-7");
            },
            success: function(json) {
                alert('Product added to cart!'),  
                $().colorbox.close(),
                itemAddCallback(json);
            },
            error: function (xhr, textStatus, errorThrown) {
                $("#error").html(xhr.responseText);
            }
        });
如果xhr.setRequestHeader('Accept',“text/html;charset=iso-8859-7”)有一个jQuery等价物,我会非常乐意使用它。另外,我应该声明什么为数据:这样我就不会得到“数据未定义”错误了?(尽管有错误,date提交罚款)

更新:根据目前为止回答者的各种建议,我的代码如下所示:

      $("#productadd").submit(function(){ 
         $.ajax({
            data: $(this).serialize(),
            type: "POST",
            url: $(this).attr('action'),
            dataType: 'text',
            mimeType: "text/html; iso-8859-7", 
            success: function() {
                alert('Item added to your order'),  
                $().colorbox.close();
            },
            error: function (xhr, textStatus, errorThrown) {
                $("#error").html(xhr.responseText);
            }
        });

我唯一的问题是,尽管它提交并显示警报等,但提交的数据是用utf-8而不是iso-8859-7编码的,有什么想法吗

请检查文档:

查找mimeType属性

mimeType(added 1.5.1)String A mime type to override the XHR mime type.
在速记POST请求中,您将
$(this).serialize()
作为数据发送,因此我认为您希望在另一个请求中发送相同的表单数据

要调试请求,请使用浏览器的“网络”面板,找出请求是否实际发出以及响应是什么(F12,然后是“网络>XHR”)


希望这有帮助

谢谢你,小费不错。然而,我的主要问题仍然存在。除了这个帖子,我没有看到任何请求。我的代码是否正确,是否应该将对警报的调用放在其他函数中?是否已将数据参数设置为$(this).serialize()?响应的状态码是什么?好的,我现在就知道了,状态码200等等,我在开发人员工具中正确地看到了post值,但在我的页面中它们显示为utf-8。所以,为了缩小范围,我在ajax中寻找正确的mimetype和/或数据类型,但我无法确定它。以后可能会更好,但永远不会。。。无论如何,请检查答案。
$.ajax({
    data: data,
    type: "POST",
    mimeType: "text/html; charset=iso-8859-7"...