我想在ajax成功时比较两个值(两个都是简单的字符串)。 Value1是来自php的echo,value2是javascript变量。但是,当我尝试类似的东西时:
$.ajax({
type: "POST",
url: proccessPage,
data: dataString,
dataType: "text",
success:function(result){
alert (result);
}
});
我将收到消息“[object Object]”。当我尝试更改alert (result);
var response = $(result);
document.getElementById("div1").innerHTML = result;
然后id为“div1”的div具有适当的值。我知道我可以隐藏div并使用它的值,但有没有办法直接使用结果?或以某种方式将结果转换为字符串? php中的代码:
if (isset($_POST['submit']) && $_POST['submit']=="true")
echo "string";
感谢。
答案 0 :(得分:3)
在您的脚本中,将数据类型更改为html。
dataType: "text",
到
dataType: "html",
答案 1 :(得分:0)
文本的dataType完全正常。确保您的PHP脚本正在为返回text / plain设置mime类型。
PHP代码: 标题('Content-type:text / plain');
jQuery将根据服务器的说法处理返回。 dataType字段只是一个提示。 http://docs.jquery.com/Specifying_the_Data_Type_for_AJAX_Requests
如果所有其他方法都失败了,请使用Firefox和Firebug。它将使您能够在成功结束中放置一个中断品脱,然后您可以检查结果变量的值。
答案 2 :(得分:0)
我通过从PHP函数创建一个json响应并使用我需要的任何内容加载它来获得成功。比较Json对象中的已知值通过为您提供已知的对象属性来处理您的[对象对象]返回问题 - 使用JSON声明:
$response = json_encode( array( 'success' => true , 'value1' => $my_result,);
header( "Content-Type: application/json" );
echo $response;
exit;
我使用成功bool来确保$ my_result是一个成功的响应,因为AJAX可以正确执行,但这允许我专门检查有效的 value1
现在,回到$ .ajax:
...
success: function(result){
if(result['success']) {
document.getElementById("removeme").innerHTML = (result['value1'] == value2)? value1 : "Uh-oh. Something went wrong!";
}
}
...
或者你可以在你的成功函数体中放置任何适当的东西,无论你需要比较或做什么。我只举了一个例子来展示一个完整的实现。
答案 3 :(得分:-1)
AJAX中的第一个A意味着异步,这意味着您的请求将正常执行,但回调仅在请求获得响应时执行。脚本不会暂停等待响应。
说,如果你想使用来自AJAX请求的信息,你必须在它的回调中使用它,否则它将无法使用。
类似的东西:
$.ajax({ type: "POST", url: proccessPage, data: dataString, dataType: "text", success:function(result){ document.getElementById("removeme").innerHTML = result; } });