Javascript 使用ajax将值发布到php时出现错误

Javascript 使用ajax将值发布到php时出现错误,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我在将数据发布到php文件时出错。下面的代码 $.ajax({ type: "POST", url: url, data: "{'konuid='" + $('#step2-id').val() + "','kategoriid='" +$('#step3-id').val() +"'}", success: function(data){ $('#form-sorular').html(data);

我在将数据发布到php文件时出错。下面的代码

$.ajax({
        type: "POST",
        url: url,
        data: "{'konuid='" + $('#step2-id').val() + "','kategoriid='" +$('#step3-id').val() +"'}",
        success: function(data){
            $('#form-sorular').html(data);
        },
        error: function(data)
        {
            alert(data.d);
        }
    });

我检查了来自ajax的php文件中的值,值为空。。这个ajax有什么问题。

您正在为
数据
值传递一个JSON格式的字符串,但我猜您的服务器代码期望值,就像您发布表单一样。因此,不是像这样的字符串:

{'konuid='step2-id-val','kategoriid='step3-id-val'}
konuid=step2-id-val&kategoriid=step3-id-val
您应该传递一个如下所示的字符串:

{'konuid='step2-id-val','kategoriid='step3-id-val'}
konuid=step2-id-val&kategoriid=step3-id-val
但是,您不应该自己连接字符串,而应该将
数据
值设置为对象,然后JQuery将为您格式化字符串:

data: {
    konuid: $('#step2-id').val(),
    kategoriid: $('#step3-id').val()
},
注意:JQuery在构建字符串时将正确编码这些值


由于ajax调用显然返回html,我建议您包括
dataType
设置:

dataType: 'html',

此外,错误回调的签名为:

function(jqXHR, textStatus, errorThrown)
将错误设置更改为:

error: function(jqXHR, textStatus, errorThrown) {
    alert('Error: ' + textStatus + ', ' + errorThrown);
    alert('Response: ' + jqXHR.responseText);
}

您正在为
数据
值传递一个JSON格式的字符串,但我猜您的服务器代码期望值就像您发布表单一样。因此,不是像这样的字符串:

{'konuid='step2-id-val','kategoriid='step3-id-val'}
konuid=step2-id-val&kategoriid=step3-id-val
您应该传递一个如下所示的字符串:

{'konuid='step2-id-val','kategoriid='step3-id-val'}
konuid=step2-id-val&kategoriid=step3-id-val
但是,您不应该自己连接字符串,而应该将
数据
值设置为对象,然后JQuery将为您格式化字符串:

data: {
    konuid: $('#step2-id').val(),
    kategoriid: $('#step3-id').val()
},
注意:JQuery在构建字符串时将正确编码这些值


由于ajax调用显然返回html,我建议您包括
dataType
设置:

dataType: 'html',

此外,错误回调的签名为:

function(jqXHR, textStatus, errorThrown)
将错误设置更改为:

error: function(jqXHR, textStatus, errorThrown) {
    alert('Error: ' + textStatus + ', ' + errorThrown);
    alert('Response: ' + jqXHR.responseText);
}

您正在为
数据
值传递一个JSON格式的字符串,但我猜您的服务器代码期望值就像您发布表单一样。因此,不是像这样的字符串:

{'konuid='step2-id-val','kategoriid='step3-id-val'}
konuid=step2-id-val&kategoriid=step3-id-val
您应该传递一个如下所示的字符串:

{'konuid='step2-id-val','kategoriid='step3-id-val'}
konuid=step2-id-val&kategoriid=step3-id-val
但是,您不应该自己连接字符串,而应该将
数据
值设置为对象,然后JQuery将为您格式化字符串:

data: {
    konuid: $('#step2-id').val(),
    kategoriid: $('#step3-id').val()
},
注意:JQuery在构建字符串时将正确编码这些值


由于ajax调用显然返回html,我建议您包括
dataType
设置:

dataType: 'html',

此外,错误回调的签名为:

function(jqXHR, textStatus, errorThrown)
将错误设置更改为:

error: function(jqXHR, textStatus, errorThrown) {
    alert('Error: ' + textStatus + ', ' + errorThrown);
    alert('Response: ' + jqXHR.responseText);
}

您正在为
数据
值传递一个JSON格式的字符串,但我猜您的服务器代码期望值就像您发布表单一样。因此,不是像这样的字符串:

{'konuid='step2-id-val','kategoriid='step3-id-val'}
konuid=step2-id-val&kategoriid=step3-id-val
您应该传递一个如下所示的字符串:

{'konuid='step2-id-val','kategoriid='step3-id-val'}
konuid=step2-id-val&kategoriid=step3-id-val
但是,您不应该自己连接字符串,而应该将
数据
值设置为对象,然后JQuery将为您格式化字符串:

data: {
    konuid: $('#step2-id').val(),
    kategoriid: $('#step3-id').val()
},
注意:JQuery在构建字符串时将正确编码这些值


由于ajax调用显然返回html,我建议您包括
dataType
设置:

dataType: 'html',

此外,错误回调的签名为:

function(jqXHR, textStatus, errorThrown)
将错误设置更改为:

error: function(jqXHR, textStatus, errorThrown) {
    alert('Error: ' + textStatus + ', ' + errorThrown);
    alert('Response: ' + jqXHR.responseText);
}

这将是正确的语法->,您如何在服务器端检查它;如果(empty($konuid)){echo“0”}我用这种方法检查值,这样键就存在了,但没有值。是否确定元素#step2 id正在返回值。-这是firebug post结果的屏幕截图。但是ajax错误部分正在运行并警告“未定义”,您不应该构建自己的ajax字符串。您插入的
.val()
中的任何JS元字符几乎肯定会使整个JSON字符串无效。这将是正确的语法->,您如何在服务器端检查它。$konuid=$\u POST['konuid'];如果(empty($konuid)){echo“0”}我用这种方法检查值,这样键就存在了,但没有值。是否确定元素#step2 id正在返回值。-这是firebug post结果的屏幕截图。但是ajax错误部分正在运行并警告“未定义”,您不应该构建自己的ajax字符串。您插入的
.val()
中的任何JS元字符几乎肯定会使整个JSON字符串无效。这将是正确的语法->,您如何在服务器端检查它。$konuid=$\u POST['konuid'];如果(empty($konuid)){echo“0”}我用这种方法检查值,这样键就存在了,但没有值。是否确定元素#step2 id正在返回值。-这是firebug post结果的屏幕截图。但是ajax错误部分正在运行并警告“未定义”,您不应该构建自己的ajax字符串。您插入的
.val()
中的任何JS元字符几乎肯定会使整个JSON字符串无效。这将是正确的语法->,您如何在服务器端检查它。$konuid=$\u POST['konuid'];如果(empty($konuid)){echo“0”}我用这种方法检查值,这样键就存在了,但没有值。是否确定元素#step2 id正在返回值。-这是firebug post结果的屏幕截图。但是ajax错误部分正在运行并警告“未定义”,您不应该构建自己的ajax字符串。您插入的
.val()
中的任何JS元字符几乎肯定会使整个JSON字符串无效。